<?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>90347</bug_id>
          
          <creation_ts>2012-06-30 23:58:03 -0700</creation_ts>
          <short_desc>Inline property storage should not be wasted when it is exhausted</short_desc>
          <delta_ts>2012-08-24 08:25:45 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>90657</dependson>
    
    <dependson>90658</dependson>
    
    <dependson>90664</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ararunprasad</cc>
    
    <cc>barraclough</cc>
    
    <cc>d-r</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gstephan</cc>
    
    <cc>gustavo</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>prem_x87</cc>
    
    <cc>thouraya.andolsi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>661111</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-30 23:58:03 -0700</bug_when>
    <thetext>Currently JSFinalObjects (i.e. vanilla JS objects created via &apos;new Object&apos;, &apos;{}&apos;, or constructor calls to user-defined functions) will have inline property storage, enough for at least 4 properties.  This is a great optimization since it means that for most objects we don&apos;t need to perform a second allocation to create property storage, and accesses to properties of small objects are fast.

But things go wrong when the inline property storage is exhausted: we allocate out-of-line storage and move all properties that were inline into the out-of-line storage.  This simplifies property accesses, as it implies that it&apos;s always safe to say object-&gt;propertyStorage[offset], where object-&gt;propertyStorage points to either the inline storage or the out-of-line storage depending on the object size.  But this simplicity comes with three costs: first, wasted memory since the inline storage slots are not reclaimed; and second, execution time penalty when the first out-of-line property is stored since all of the inline properties have to be copied to the out-of-line storage; and third, increased execution time cost for accessing the properties that were previously inline.

A better approach would be to continue to use the inline property storage even when it is exhausted: the first N properties will always be inline and the remainder will be out-of-line.  Since our inline property storage size is tuned for common object sizes, this means that the vast majority of properties in the heap will tend to be inline and will be fast to access.  This will be a performance improvement over the current approach, where as soon as any property overflows the inline storage, all properties are evicted and become more expensive to access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661112</commentid>
    <comment_count>1</comment_count>
      <attachid>150328</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-01 00:02:18 -0700</bug_when>
    <thetext>Created attachment 150328
it begins

Still a lot more to do.  So far I&apos;ve written probably most of the glue necessary for the 32-bit LLInt to work, and have modified most of the runtime.  But I still need to find all of the remaining places where the offset logic needs changing, and I still need to tweak the other execution engines.  That will probably be a lot of work, and there&apos;s no choice but to do it in one go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661155</commentid>
    <comment_count>2</comment_count>
      <attachid>150335</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-01 13:20:26 -0700</bug_when>
    <thetext>Created attachment 150335
more!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661176</commentid>
    <comment_count>3</comment_count>
      <attachid>150339</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-01 15:50:54 -0700</bug_when>
    <thetext>Created attachment 150339
it grows!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661181</commentid>
    <comment_count>4</comment_count>
      <attachid>150340</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-01 16:09:38 -0700</bug_when>
    <thetext>Created attachment 150340
the JIT has been attacked

But I still need to do the horrific load-to-nop patching code.  And I still need to write the same code for the old JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661199</commentid>
    <comment_count>5</comment_count>
      <attachid>150346</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-01 16:53:05 -0700</bug_when>
    <thetext>Created attachment 150346
prop storage load patching is implemented

The X86 version of the code to flip the out-of-line storage load between being active and inactive is written.  I decided to go for the load-to-lea trick that Gavin suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661214</commentid>
    <comment_count>6</comment_count>
      <attachid>150351</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-01 18:24:42 -0700</bug_when>
    <thetext>Created attachment 150351
a lot more code

Property name iteration ... it&apos;s special.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661321</commentid>
    <comment_count>7</comment_count>
      <attachid>150377</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-02 01:03:02 -0700</bug_when>
    <thetext>Created attachment 150377
property name iteration done right

The glue for 32-bit is almost done!  Oddly, I&apos;m doing 32-bit first this time; I&apos;ll do 64-bit after 32-bit starts working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661627</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-02 11:22:27 -0700</bug_when>
    <thetext>Zoltan, I&apos;ve CC&apos;d you because this will require new assembler support: we&apos;ll need to be able to turn a

loadPtr(Address(register1, constant), register2)

into a

addPtr(constant, register1, register2)

and vice-versa in RepatchBuffer.  This patch doesn&apos;t build yet and is still in the relatively early stages.  I hope to have it finished in a day or so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661950</commentid>
    <comment_count>9</comment_count>
      <attachid>150530</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-02 21:40:50 -0700</bug_when>
    <thetext>Created attachment 150530
wrote some 64-bit thingies

It still probably doesn&apos;t compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661973</commentid>
    <comment_count>10</comment_count>
      <attachid>150535</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-02 22:40:41 -0700</bug_when>
    <thetext>Created attachment 150535
fixing some compiler errors

But of course it doesn&apos;t compile yet!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661988</commentid>
    <comment_count>11</comment_count>
      <attachid>150540</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-02 23:10:37 -0700</bug_when>
    <thetext>Created attachment 150540
it compiles!

In 64-bit mode anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662006</commentid>
    <comment_count>12</comment_count>
      <attachid>150546</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-02 23:49:18 -0700</bug_when>
    <thetext>Created attachment 150546
I proved it correct

by running &quot;hello world&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662518</commentid>
    <comment_count>13</comment_count>
      <attachid>150680</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-03 15:34:23 -0700</bug_when>
    <thetext>Created attachment 150680
it might work

Still doing some more testing though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662521</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 15:38:00 -0700</bug_when>
    <thetext>Attachment 150680 did not pass style-queue:

Source/JavaScriptCore/runtime/PropertyMapHashTable.h:179:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyMapHashTable.h:181:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:90:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:91:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:92:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PutPropertySlot.h:67:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/runtime/Options.cpp:137:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:49:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:51:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:53:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:54:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:55:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:56:  The parameteFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
r name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:57:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:58:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:59:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:62:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:102:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 50 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>662523</commentid>
    <comment_count>15</comment_count>
      <attachid>150680</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-03 15:41:08 -0700</bug_when>
    <thetext>Comment on attachment 150680
it might work

Attachment 150680 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13124661</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662526</commentid>
    <comment_count>16</comment_count>
      <attachid>150680</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-03 15:44:03 -0700</bug_when>
    <thetext>Comment on attachment 150680
it might work

Attachment 150680 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13139304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662536</commentid>
    <comment_count>17</comment_count>
      <attachid>150680</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-03 15:56:42 -0700</bug_when>
    <thetext>Comment on attachment 150680
it might work

Attachment 150680 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13127629</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662541</commentid>
    <comment_count>18</comment_count>
      <attachid>150680</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-03 16:03:18 -0700</bug_when>
    <thetext>Comment on attachment 150680
it might work

Attachment 150680 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13126593</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662545</commentid>
    <comment_count>19</comment_count>
      <attachid>150680</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-03 16:11:07 -0700</bug_when>
    <thetext>Comment on attachment 150680
it might work

Attachment 150680 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13131598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662576</commentid>
    <comment_count>20</comment_count>
      <attachid>150680</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-03 16:53:21 -0700</bug_when>
    <thetext>Comment on attachment 150680
it might work

Attachment 150680 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13133548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662619</commentid>
    <comment_count>21</comment_count>
      <attachid>150701</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-03 18:03:35 -0700</bug_when>
    <thetext>Created attachment 150701
it works on x86-32, x86-64, and classic interpreter

Still working on other backends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662621</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 18:07:20 -0700</bug_when>
    <thetext>Attachment 150701 did not pass style-queue:

Source/JavaScriptCore/runtime/PropertyMapHashTable.h:179:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyMapHashTable.h:181:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:90:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:91:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:92:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PutPropertySlot.h:67:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/runtime/Options.cpp:137:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:49:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:51:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:53:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:54:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:55:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:56:  The parameteFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
r name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:57:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:58:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:59:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:62:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:102:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 56 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>662626</commentid>
    <comment_count>23</comment_count>
      <attachid>150701</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-03 18:27:37 -0700</bug_when>
    <thetext>Comment on attachment 150701
it works on x86-32, x86-64, and classic interpreter

Attachment 150701 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13125663</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662628</commentid>
    <comment_count>24</comment_count>
      <attachid>150701</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-03 18:28:03 -0700</bug_when>
    <thetext>Comment on attachment 150701
it works on x86-32, x86-64, and classic interpreter

Attachment 150701 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13133579</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662717</commentid>
    <comment_count>25</comment_count>
      <attachid>150729</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 00:47:29 -0700</bug_when>
    <thetext>Created attachment 150729
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662722</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 00:52:45 -0700</bug_when>
    <thetext>Attachment 150729 did not pass style-queue:

Source/JavaScriptCore/runtime/PropertyMapHashTable.h:179:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyMapHashTable.h:181:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:90:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:91:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:92:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PutPropertySlot.h:67:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/runtime/Options.cpp:137:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:49:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:51:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:53:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:54:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:55:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:56:  The parameteFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
r name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:57:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:58:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:59:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:62:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:102:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 60 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>662730</commentid>
    <comment_count>27</comment_count>
      <attachid>150732</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 01:02:42 -0700</bug_when>
    <thetext>Created attachment 150732
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662738</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 01:07:21 -0700</bug_when>
    <thetext>Attachment 150732 did not pass style-queue:

Source/JavaScriptCore/runtime/PropertyMapHashTable.h:179:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyMapHashTable.h:181:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:90:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:91:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:92:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PutPropertySlot.h:67:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/runtime/Options.cpp:137:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:49:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:50:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:51:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:52:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:53:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:54:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:55:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:56:  The parameteFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
r name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:57:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:58:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:59:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:60:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:61:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/PropertyOffset.h:62:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:102:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 59 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>662739</commentid>
    <comment_count>29</comment_count>
      <attachid>150736</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 01:14:32 -0700</bug_when>
    <thetext>Created attachment 150736
the patch

Fix style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662740</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 01:16:46 -0700</bug_when>
    <thetext>Attachment 150736 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:137:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 59 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>662746</commentid>
    <comment_count>31</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 01:26:01 -0700</bug_when>
    <thetext>Zoltan: I&apos;ve finalized the approach of repatching loadPtr().  There&apos;s now a convertibleLoadPtr(), which can be converted into an address computation.  It should be a straight-forward API to implement, though it is necessarily gross.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662758</commentid>
    <comment_count>32</comment_count>
      <attachid>150736</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 01:51:15 -0700</bug_when>
    <thetext>Comment on attachment 150736
the patch

Attachment 150736 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13133682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662764</commentid>
    <comment_count>33</comment_count>
      <attachid>150736</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 02:00:40 -0700</bug_when>
    <thetext>Comment on attachment 150736
the patch

Attachment 150736 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13127786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663119</commentid>
    <comment_count>34</comment_count>
      <attachid>150835</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 12:58:23 -0700</bug_when>
    <thetext>Created attachment 150835
the patch

Fixing build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663121</commentid>
    <comment_count>35</comment_count>
      <attachid>150836</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 12:59:43 -0700</bug_when>
    <thetext>Created attachment 150836
the patch

Just rebasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663124</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 13:04:14 -0700</bug_when>
    <thetext>Attachment 150836 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:137:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 60 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>663141</commentid>
    <comment_count>37</comment_count>
      <attachid>150836</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 13:23:33 -0700</bug_when>
    <thetext>Comment on attachment 150836
the patch

Attachment 150836 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13137798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663155</commentid>
    <comment_count>38</comment_count>
      <attachid>150836</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 13:58:13 -0700</bug_when>
    <thetext>Comment on attachment 150836
the patch

Attachment 150836 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13125906</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663156</commentid>
    <comment_count>39</comment_count>
      <attachid>150841</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 13:59:18 -0700</bug_when>
    <thetext>Created attachment 150841
the patch

More build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663158</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 14:01:12 -0700</bug_when>
    <thetext>Attachment 150841 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:138:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 60 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>663166</commentid>
    <comment_count>41</comment_count>
      <attachid>150841</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 14:28:34 -0700</bug_when>
    <thetext>Comment on attachment 150841
the patch

Attachment 150841 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13125923</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663172</commentid>
    <comment_count>42</comment_count>
      <attachid>150843</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 14:41:24 -0700</bug_when>
    <thetext>Created attachment 150843
the patch

Even more build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663174</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 14:45:12 -0700</bug_when>
    <thetext>Attachment 150843 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:138:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 61 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>663192</commentid>
    <comment_count>44</comment_count>
      <attachid>150851</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 16:34:26 -0700</bug_when>
    <thetext>Created attachment 150851
the patch

More build fixes.  Apparently, the compiler the Mac build bot uses has a whole bunch of pedantry I&apos;ve magically managed to avoid on my install.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663195</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 16:36:47 -0700</bug_when>
    <thetext>Attachment 150851 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:138:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 61 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>663198</commentid>
    <comment_count>46</comment_count>
      <attachid>150851</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-04 17:15:27 -0700</bug_when>
    <thetext>Comment on attachment 150851
the patch

Attachment 150851 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13134892</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663225</commentid>
    <comment_count>47</comment_count>
      <attachid>150858</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 19:12:03 -0700</bug_when>
    <thetext>Created attachment 150858
the patch

Ugh more build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663227</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 19:15:54 -0700</bug_when>
    <thetext>Attachment 150858 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:138:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 61 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>663238</commentid>
    <comment_count>49</comment_count>
      <attachid>150861</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-04 19:44:30 -0700</bug_when>
    <thetext>Created attachment 150861
the patch

Maybe it&apos;ll actually build this time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663240</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 19:51:15 -0700</bug_when>
    <thetext>Attachment 150861 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:375:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:376:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:394:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:396:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;chain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:397:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:398:  The parameter name &quot;callFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:399:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Options.cpp:138:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 11 in 61 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>663269</commentid>
    <comment_count>51</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-04 20:52:14 -0700</bug_when>
    <thetext>I&apos;&apos;l handle the ARM port when the patch is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663726</commentid>
    <comment_count>52</comment_count>
      <attachid>150861</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-05 14:18:54 -0700</bug_when>
    <thetext>Comment on attachment 150861
the patch

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

Agreed that that it would be nice to consider a class in the future, and even though it&apos;s not from code you added it would be good to fix the preexisting style issues re duplicate names.

&gt; Source/JavaScriptCore/runtime/Options.cpp:121
&gt; +#define FOR_EACH_OPTION(type_, name_, defaultValue_)    \

extra whitespace! r-!

&gt;&gt; Source/JavaScriptCore/runtime/Options.cpp:138
&gt;&gt; +#endif
&gt; 
&gt; Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]

Technically we don&apos;t allow #if 0 code, so this is on pretty shaky ground, but Im prepared to look the other way if this helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663760</commentid>
    <comment_count>53</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-05 15:56:55 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/121925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663884</commentid>
    <comment_count>54</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-07-05 21:58:27 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; Landed in http://trac.webkit.org/changeset/121925

FYI: I filed a bug for ARM fix - https://bugs.webkit.org/show_bug.cgi?id=90657 ,
a bug for 32 bit regression - https://bugs.webkit.org/show_bug.cgi?id=90658 and
landed a 64 bit buildfix - https://trac.webkit.org/changeset/121943</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663912</commentid>
    <comment_count>55</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-06 00:03:21 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; (In reply to comment #53)
&gt; &gt; Landed in http://trac.webkit.org/changeset/121925
&gt; 
&gt; FYI: I filed a bug for ARM fix - https://bugs.webkit.org/show_bug.cgi?id=90657 ,
&gt; a bug for 32 bit regression - https://bugs.webkit.org/show_bug.cgi?id=90658 and
&gt; landed a 64 bit buildfix - https://trac.webkit.org/changeset/121943

Thanks for the 64 bit build fix!  The 32-bit regression should be fixed as of http://trac.webkit.org/changeset/121946.

Good luck with the ARM side and let me know if you need clarification of the new assembler functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663944</commentid>
    <comment_count>56</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-07-06 01:35:55 -0700</bug_when>
    <thetext>I filed one more bug for PerformanceTests/Dromaeo/cssquery-prototype.html crash - https://bugs.webkit.org/show_bug.cgi?id=90664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663986</commentid>
    <comment_count>57</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-06 03:34:57 -0700</bug_when>
    <thetext>If I am not mistaken, the changes to JSObject.h in this page cause a lot of warnings in debug builds, like:

Source/JavaScriptCore/runtime/JSObject.h: In member function ‘void JSC::JSFinalObject::finishCreation(JSC::JSGlobalData&amp;)’:
Source/JavaScriptCore/runtime/JSObject.h:419:61: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
Source/JavaScriptCore/runtime/JSObject.h:420:67: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663988</commentid>
    <comment_count>58</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-06 03:35:19 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; page 

=&gt; patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672132</commentid>
    <comment_count>59</comment_count>
    <who name="Arunprasad">ararunprasad</who>
    <bug_when>2012-07-18 01:42:46 -0700</bug_when>
    <thetext>This breaks SH4 JIT build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672133</commentid>
    <comment_count>60</comment_count>
    <who name="Arunprasad">ararunprasad</who>
    <bug_when>2012-07-18 01:44:31 -0700</bug_when>
    <thetext>QT SH4 bot seems to be dead. If it was active might have reported this build break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674405</commentid>
    <comment_count>61</comment_count>
    <who name="Premkumar Subramanian">prem_x87</who>
    <bug_when>2012-07-20 03:09:59 -0700</bug_when>
    <thetext>This patch breaks Qt Mips JIT build as well. (In reply to comment #60)
&gt; QT SH4 bot seems to be dead. If it was active might have reported this build break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704120</commentid>
    <comment_count>62</comment_count>
    <who name="STEPHAN Gael">gstephan</who>
    <bug_when>2012-08-24 08:25:45 -0700</bug_when>
    <thetext>If you don&apos;t mind Thouraya i added you here so you maybe can check out the SH4 part of the JIT ( I cannot build the latest releases of webkit because of the changes in the JIT not ported to the SH4 JIT)

Thank you!!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150328</attachid>
            <date>2012-07-01 00:02:18 -0700</date>
            <delta_ts>2012-07-01 13:20:26 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>overflowstorage_patch_2.diff</filename>
            <type>text/plain</type>
            <size>60616</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDEyLTA2LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIHByb3BlcnR5IHN0b3JhZ2Ugc2hvdWxkIG5vdCBiZSB3YXN0ZWQgd2hlbiBpdCBpcyBl
eGhhdXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkwMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS94ODYucmI6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNldEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1l
L1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQcm9wZXJ0eU1hcEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmdldERlbGV0ZWRPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldCk6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcnkpOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvcGVydHlPZmZzZXQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpj
aGVja09mZnNldCk6CisgICAgICAgIChKU0M6OnZhbGlkYXRlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6aXNWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OmlzSW5saW5lT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6aXNPdXRPZkxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjpvZmZzZXRJbklubGlu
ZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0U3BlY2lmaWNW
YWx1ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpwdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemUpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRy
YW5zaXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAxMi0w
Ni0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTT2JqZWN0
IHdhc3RlcyB0b28gbXVjaCBtZW1vcnkgb24gdW51c2VkIHByb3BlcnR5IHNsb3RzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWQpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtOTUyLDcgKzk1OCwx
MCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAg
IHBjWzZdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERh
dGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hh
aW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hh
aW4uc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBp
ZiAocGNbOF0udS5vcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxp
bmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShy
ZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA4NywzMSArMTA4Nyw1OCBA
QCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkKIAogCi1f
bGxpbnRfb3BfZ2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBj
YWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorIyBvcGNvZGUuIFdlIGRv
LCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxz
LCBzaW5jZQorIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5k
IHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUg
bmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorIyB3
ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNybyBnZXRCeUlkKGdldFByb3Bl
cnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBXZSBvbmx5IGRvIG1vbm9t
b3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRo
ZQotICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBj
aGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVl
LiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCi0g
ICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtl
IHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5n
IGFueXdheS4KICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlk
U2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEs
IC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZGkgVGFnT2Zmc2V0
W3QwLCB0Ml0sIHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgotICAgIHN0
b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0
MywgdDIsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAg
ICAgICB0MywKKyAgICAgICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNj
cmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICAgICAgICAgIGxv
YWRpIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKKyAgICAgICAgICAg
IHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZGkgMzJbUENd
LCB0MQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQyLCB0MSkKKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIAorICAgICAgICAub3BHZXRCeUlkU2xvdzoKKyAgICAg
ICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAogCi0ub3BHZXRCeUlkU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2go
OSkKK21hY3JvIHdpdGhJbmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250
aW51YXRpb24pCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5
IHN0b3JhZ2UsIGFuZCB0aGF0IHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBp
cyB1bnVzZWQuCisgICAgY29udGludWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQorZW5k
CisKK21hY3JvIHdpdGhPdXRPZkxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBj
b250aW51YXRpb24pCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW29iamVj
dF0sIHByb3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9y
YWdlIHJlZ2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBh
bmQgdGhhdCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBv
YmplY3QgcG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHBy
b3BlcnR5U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAg
Z2V0QnlJZCh3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29w
X2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1Nyw5NiBAQCBfbGxpbnRfb3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0
X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRT
bG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0
eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0
b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
dDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAg
ICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0
Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0
ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zm
c2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAg
ICAgIGVuZCkKK2VuZAogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAorX2xsaW50X29wX3B1dF9i
eV9pZDoKKyAgICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAot
bWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKworbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQx
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQ
dXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBs
b2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qw
XSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQy
LCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNw
YXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQz
LAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAg
YWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIp
CisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRp
IDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAg
IGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVj
a3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hl
Y2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1
Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3Rv
CisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3Nj
cmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sg
ZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1
Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5l
cSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNj
cmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0
cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0Fk
ZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24o
bm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAg
ICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29u
c3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUg
cmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BD
XSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwg
b2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0
Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNo
LCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdP
ZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAg
ICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1
cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAg
ICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVy
ZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0
QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQor
CisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6Cisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVT
dG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1
LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4
NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhu
aWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4
NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAg
ICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAg
ICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIElu
c3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5p
c19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtp
bmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAg
ICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20u
cHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0p
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3Bl
cmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQp
fSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDgg
KzE1Myw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICBm
b3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlw
ZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpAQCAtNTE5LDE3ICs1MTksMTcgQEAgYm9vbCBK
U09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YQogICAgIGlmIChzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgc2l6ZV90IG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7
CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0g
V1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNl
dCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNl
dCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTQsOCArNTk0LDggQEAgYm9vbCBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAw
OwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG9iamVjdC0+c3Ry
dWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgaWYgKG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3JpcHRvci5zZXRE
ZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJpYnV0ZXMpOwog
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCShyZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksMjYgKzE2OSwzNSBAQCBDT01QSUxF
X0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIC8vIFRoaXMgZ2V0IGZ1
bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICAgICAgSlNWYWx1ZSBn
ZXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChv
ZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpT
VmFsdWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJl
dHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkg
OiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zm
c2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7
CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJl
Y3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0Nl
bGwqIHNwZWNpZmljRnVuY3Rpb247Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8g
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAg
fQogCi0gICAgICAgIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0Rm9y
TG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbiAtIHByb3BlcnR5U3RvcmFnZSgpOwor
ICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVzdWx0OworICAgICAgICAgICAgc2l6ZV90IG9m
ZnNldEluSW5saW5lU3RvcmFnZSA9IGxvY2F0aW9uIC0gaW5saW5lU3RvcmFnZSgpOworICAgICAg
ICAgICAgaWYgKG9mZnNldEluSW5saW5lU3RvcmFnZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBvZmZzZXRJbklu
bGluZVN0b3JhZ2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bG9jYXRpb24gLSBvdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB2YWxpZGF0ZU9mZnNl
dChyZXN1bHQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CkBAIC0yMDUsOSArMjE0LDkgQEAgQ09NUElMRV9BU1NF
UlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHB1dE93bkRhdGFQcm9w
ZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMu
Ci0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBw
dXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBK
U1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEs
IHRoaXMsIHZhbHVlKTsgfQotICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0
KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQo
KTsgfQorICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpIGNvbnN0IHsgcmV0dXJuIGxvY2FsRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9CisgICAg
ICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCktPnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRVbmRl
ZmluZWRBdERpcmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAK
QEAgLTIyOSwxNCArMjM4LDYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICB2b2lkIHJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0
ZSogZXhlYyk7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlTdG9yYWdlIGdy
b3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBu
ZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0KLSAgICAgICAgICAgICAgICAhbV9wcm9w
ZXJ0eVN0b3JhZ2UuZ2V0KCkKLSAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
Pih0aGlzICsgMSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IHN0cnVjdHVyZSgpLT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
ICAgIH0KICAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJv
cGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0
eSwgU3RydWN0dXJlKik7CkBAIC0zMDUsMTcgKzMwNiwyNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAg
dm9pZCBpc1N0cmluZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ug
cHJvcGVydHlTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7
IH0KLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1f
cHJvcGVydHlTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlu
bGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0
b3JhZ2U+KHRoaXMgKyAxKTsgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAx
KTsgfQorICAgICAgICAKKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3Rv
cmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQorICAgICAg
ICBQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fb3V0T2ZMaW5l
U3RvcmFnZS5nZXQoKTsgfQogCi0gICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0CisgICAgICAgIGNvbnN0
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdl
KClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCldOwogICAgICAgICB9CiAKLSAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9m
ZnNldCkKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
JnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF07CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZz
ZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGlu
ZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CiAgICAgICAgIH0K
IAogICAgICAgICB0ZW1wbGF0ZTxQdXRNb2RlPgpAQCAtNjExLDEwICs2MTksMTAgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTQ2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVl
IEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmlu
ZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpKSB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgp
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkK
ICAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgbmFtZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5k
KQorICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1
cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAg
IH0KICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY4NCw4IEBAIGlubGluZSBib29s
IEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGlj
dGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAg
ICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRy
aWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0g
V1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1
cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBm
dW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0
aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBp
ZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVu
dFNwZWNpZmljRnVuY3Rpb24pKQpAQCAtNzA2LDYgKzcxNCw3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFk
ZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICAgc2V0UHJvcGVydHlTdG9yYWdlKGds
b2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAorICAgICAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOwogICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlKCktPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3Bl
cnR5IGNhbGwgYmVsb3cuCkBAIC03MTQsMTMgKzcyMywxNCBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHNpemVfdCBj
dXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
ICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewogICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOyAKICAgICAgICAgaWYg
KGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
CiAgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
CiAKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKG9mZnNl
dCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIHNldFBy
b3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC03MzQsNyAr
NzQ0LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIHVu
c2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVu
Y3Rpb247CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAg
aWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlk
T2Zmc2V0KSB7CiAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0
cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Njgs
NiArNzc4LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
bihnbG9iYWxEYXRhLCB0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwogICAgIAorICAgIHZhbGlkYXRlT2Zmc2V0KG9m
ZnNldCk7CiAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2Fy
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCkBAIC04MjcsNyArODM4LDcgQEAgaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcgogICAgIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxs
R3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQogICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5
U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAg
c2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3Qo
dmFsdWUpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiAgICAgc2V0UHJvcGVydHlTdG9yYWdlKGds
b2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQo
Z2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsx
MzAsOCBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgZm9y
ICg7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5v
dEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYg
KzIxLDcgQEAKICNpZm5kZWYgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogI2RlZmluZSBQcm9wZXJ0
eU1hcEhhc2hUYWJsZV9oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUg
IlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFRhYmxlLmg+CkBAIC03MiwxMSArNzMsMTEgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRQb3dlck9m
Mih1bnNpZ25lZCB2KQogCiBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSB7CiAgICAgU3RyaW5nSW1w
bCoga2V5OwotICAgIHVuc2lnbmVkIG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7
CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBzcGVj
aWZpY1ZhbHVlOwogCi0gICAgUHJvcGVydHlNYXBFbnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwqIGtleSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCisgICAgUHJvcGVydHlNYXBF
bnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwq
IGtleSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCiAgICAgICAgIDoga2V5KGtleSkKICAgICAgICAgLCBvZmZzZXQob2Zm
c2V0KQogICAgICAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykKQEAgLTE3NSw3ICsxNzYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBoYXNE
ZWxldGVkT2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIHZvaWQgYWRkRGVsZXRl
ZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0
IG5leHRPZmZzZXQoSlNUeXBlIHR5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFi
bGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQu
CiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4g
PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1U
YWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4
ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0
aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFBy
b3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGlu
ZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVk
T2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQ
cm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsK
ICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zm
c2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zm
c2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAor
ICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAg
IEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNp
dHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9m
ZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAi
SlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2YgVVNFKEpTVkFMVUUzMl82NCkKKyNk
ZWZpbmUgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNgorI2Vsc2UKKyNkZWZpbmUgSU5MSU5FX1NU
T1JBR0VfQ0FQQUNJVFkgNAorI2VuZGlmCisKK3R5cGVkZWYgaW50IFByb3BlcnR5T2Zmc2V0Owor
CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOworc3RhdGlj
IGNvbnN0IFByb3BlcnR5T2Zmc2V0IGlubGluZVN0b3JhZ2VDYXBhY2l0eSA9IElOTElORV9TVE9S
QUdFX0NBUEFDSVRZOworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5l
T2Zmc2V0ID0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworCitpbmxpbmUgdm9pZCBjaGVja09mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cisg
ICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNTRVJUKG9m
ZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZz
ZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAgICAgfHwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOwor
ICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxp
ZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0
IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsK
KyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3Qg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxp
ZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsK
KyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJu
IG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGlu
ZU9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFz
dE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNr
T2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQor
ICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVT
bG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5l
eHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQor
eworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxP
YmplY3RUeXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmly
c3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQ
cm9wZXJ0eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAg
IHJldHVybiBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNp
b24gMTIxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0K
ICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQ
cm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNv
bnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVy
biBtX29mZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBz
ZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQor
ICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcg
KzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMg
PSBnZXR0ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RC
YXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZh
bHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4g
cmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBi
ZWZvcmUuCiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3Qg
bmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBv
dmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBt
X29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlw
ZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhp
c1ZhbHVlOwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgbV9vZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5
VHlwZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQ
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0
ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0
KQorICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3Rp
bmdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29m
ZnNldCA9IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHko
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVy
dHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNl
OwpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wg
aXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAg
ICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7
CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9jbGFzc0luZm8o
Y2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdh
dGNoaW5nKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFs
T2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAg
LCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAg
LCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQ
cm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZh
bHNlKQpAQCAtMTgwLDcgKzE4MCw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmEKICAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25X
YXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX3Byb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fb2Zmc2V0KGlu
dmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkK
ICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMjAxLDcgKzIwMSw3IEBAIFN0cnVjdHVyZTo6U3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fY2xhc3NJbmZvKHByZXZpb3VzLT5t
X2NsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRX
YXRjaGluZykKICAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkocHJldmlvdXMtPm1fcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkpCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1f
b2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5t
X2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAg
ICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3Bl
cnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwog
Ci0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJs
ZS0+Y29weShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9w
ZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwg
MCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUp
Ci0gICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKG1fb2Zmc2V0ICsgMSk7CisgICAgICAgIGNyZWF0
ZVByb3BlcnR5TWFwKG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KSk7CiAKICAg
ICBmb3IgKHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkg
ewogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMjg3LDcgKzI4Nyw3IEBA
IHZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3Bl
Y2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgp
KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGlu
Z1RyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlm
IChzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBz
cGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChleGlz
dGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKKyAgICAgICAgdmFsaWRhdGVP
ZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwog
ICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0OwogICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOwogICAgIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIDA7CiB9CiAK
LVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3Qm
IG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUgYSBzcGVjaWZp
YyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhlcmUgaXMKICAg
ICAvLyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3BlcnR5IG5hbWUg
YW5kIGF0dHJpYnV0ZXMsIGJ1dApAQCAtMzYxLDcgKzM2MSw3IEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsK
ICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKQEAg
LTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFy
eVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6
ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291bnQpOwotCisg
ICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
Zmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8udHlwZSgpKTsK
ICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5l
bmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gbV9wcm9w
ZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsKICAgICAgICAg
ICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9mZnNldCk7CiAg
ICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUgbmV3IHByb3Bl
cnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAgICAgICAgICBp
dGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFs
IGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3Vu
dDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
aSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2Jh
bERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBtX3Byb3BlcnR5
VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJldHVybiB0aGlz
OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsK
IApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRo
b3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHB1dFNwZWNp
ZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgaWYg
KHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAg
ICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBB
U1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0
aW9uQ2FjaGUpOwpAQCAtNTkzLDggKzU5NCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5V2l0aG91dFQKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnlGb3JQ
aW5uaW5nKGdsb2JhbERhdGEpOwogCiAgICAgcGluKCk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHJl
bW92ZShwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBvZmZzZXQ7CisgICAgcmV0dXJuIHJlbW92
ZShwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6cGluKCkKQEAgLTYzOSwyMCAr
NjM5LDIwIEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AKIAogUGFz
c093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlu
bmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogb3duZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG1fb2Zm
c2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG1f
cHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9w
cm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG51bWJlck9mU2xvdHNGb3JMYXN0T0Zm
c2V0KG1fb2Zmc2V0KSkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBp
bnZhbGlkT2Zmc2V0OwogCiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5
VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQot
ICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZz
ZXQ7CiAKICAgICBhdHRyaWJ1dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7CiAgICAgc3BlY2lmaWNW
YWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmdldCgpOwpAQCAtNjg1LDkgKzY4NSw5IEBAIHZv
aWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3Bl
Y2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKQogewotICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
KSA9PSBub3RGb3VuZCk7CisgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KGdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpKSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBEb250RW51bSkKQEAgLTY5OCwxMiArNjk4LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAg
ICAgICBjcmVhdGVQcm9wZXJ0eU1hcCgpOwogCi0gICAgdW5zaWduZWQgbmV3T2Zmc2V0OwotCi0g
ICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQotICAgICAgICBuZXdP
ZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPmdldERlbGV0ZWRPZmZzZXQoKTsKLSAgICBlbHNlCi0g
ICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOworICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+bmV4dE9mZnNldChtX3R5cGVJbmZv
LnR5cGUoKSk7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGds
b2JhbERhdGEsIHRoaXMsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KSk7CiAKQEAgLTcxMSw3ICs3MDYsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6
cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKIApAQCAtNzI0LDcgKzcxOSw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQ
cm9wZXJ0eU5hbWUgcHIKICAgICBpZiAoIXBvc2l0aW9uLmZpcnN0KQogICAgICAgICByZXR1cm4g
bm90Rm91bmQ7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OwogCiAg
ICAgbV9wcm9wZXJ0eVRhYmxlLT5yZW1vdmUocG9zaXRpb24pOwogICAgIG1fcHJvcGVydHlUYWJs
ZS0+YWRkRGVsZXRlZE9mZnNldChvZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVt
cFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0
dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBzaXpl
X3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVy
dHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0xMDgsNyArMTA4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSk7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9y
TGFzdE9mZnNldChtX29mZnNldCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwogICAgICAgICAgICAgICAgIHJldHVybiBj
dXJyZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICAgICAgfQpA
QCAtMTI3LDggKzEyNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGgg
Y2F1dGlvbi4gIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmVQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCByZW1v
dmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7
CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xvYmFs
RGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0RpY3Rp
b25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9uYXJ5
S2luZDsgfQpAQCAtMTQ5LDE4ICsxNDksMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAg
ICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAg
ICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAg
IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNp
dGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKICAg
ICAgICAgdm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWdu
ZWQgcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
OyB9Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VS
VChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0
eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZM
aW5lQ2FwYWNpdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZM
aW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3Rv
cmFnZVNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9y
TGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KICAgICAgICAgc2l6ZV90IGlubGluZVN0
b3JhZ2VDYXBhY2l0eSgpIGNvbnN0OwogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkgY29uc3Q7CiAKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUpOwotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5h
bWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFs
dWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBn
ZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAg
ICAgICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQ
cm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRp
ZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMTc3LDcgKzE5MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllczsgfQogICAgICAgICAKLSAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRh
YmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQorICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxl
KQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKTsKKyAg
ICAgICAgICAgIHJldHVybiAhaXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlv
bihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVj
aWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0g
bWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMjkyLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9p
ZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1l
IGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBz
dG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAw
IDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAt
MzEwLDggKzMyOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBub09mZnNldCA9IC0xOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVj
aWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUlu
Zm87CkBAIC0zMzksNyArMzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVpbnQzMl90
IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBu
b3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9kaWN0
aW9uYXJ5S2luZCA6IDI7CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAx
OwpAQCAtMzUzLDI2ICszNzAsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVk
IG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0
cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKKyAgICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAg
ICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAg
ICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAg
ICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50
cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmly
c3Q7Ci0gICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAg
ICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAg
fQogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0
cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFt
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNf
aW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxE
YXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4g
bm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQ
cm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmco
bmFtZS5pbXBsKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0
IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0OwogICAgIH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1
Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150335</attachid>
            <date>2012-07-01 13:20:26 -0700</date>
            <delta_ts>2012-07-01 15:50:54 -0700</delta_ts>
            <desc>more!</desc>
            <filename>overflowstorage_patch_3.diff</filename>
            <type>text/plain</type>
            <size>81755</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNSBA
QAorMjAxMi0wNy0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFk
T3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OlB1dEJ5SWRTdGF0dXMpOgor
ICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUHV0QnlJZFN0
YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29s
dmVHbG9iYWxTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6UmVz
b2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6Om9m
ZnNldCk6CisgICAgICAgIChSZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKFN0cnVjdHVyZVNldCk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNl
dEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJp
bWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAg
ICAgIChQcm9wZXJ0eU1hcEVudHJ5KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6
UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
VGFibGU6OmdldERlbGV0ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjph
ZGREZWxldGVkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6bmV4dE9mZnNl
dCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpzaXplSW5N
ZW1vcnkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlPZmZzZXQuaDogQWRkZWQuCisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNDOjpjaGVja09mZnNldCk6CisgICAgICAgIChKU0M6OnZh
bGlkYXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNWYWxpZE9mZnNldCk6CisgICAgICAgIChK
U0M6OmlzSW5saW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNPdXRPZkxpbmVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpvZmZzZXRJbklubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNs
b3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpT
Qzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlT
bG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90
OjpjbGVhck9mZnNldCk6CisgICAgICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zmc2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xv
dCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJv
cGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJs
ZUZvclBpbm5pbmcpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRXaWxsR3Jvd1Byb3BlcnR5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Om91dE9mTGluZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRW1wdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25Db3VudCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAxMi0wNi0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEpTT2JqZWN0IHdhc3RlcyB0b28gbXVjaCBtZW1vcnkgb24gdW51
c2VkIHByb3BlcnR5IHNsb3RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcs
OSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBv
cF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdldF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlf
aWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9z
ZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRfc2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAt
NDkxLDcgKzQ5NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4K
ICAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNl
dCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1
Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1
Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9p
ZCkpIHsKKyAgICAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZCkgfHwgdlBDWzBdLnUuKSB7CiAgICAgICAgIHByaW50U3RydWN0dXJl
KCJwdXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAzMyw2
ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZF9zZWxmOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46CkBAIC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291
dF9vZl9saW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29m
X2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewog
ICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lk
X2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1
Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnNbaV1dOwogICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgog
ICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRd
LnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBAIC0yMDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAg
ICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUu
Z2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJ
KHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmli
dXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0
dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZv
dW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwg
c3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvckNoYWluKEdldEIKICAgICAgICAgCiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVu
dFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBp
ZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQu
bV9vZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29m
ZnNldCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJl
U2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAtMTU2LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAg
ICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlk
T2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVy
ZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUg
PSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBp
ZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVy
ZVNldC5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgc2l6
ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1Zh
bHVlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5k
KSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQobXlPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkBAIC0xOTYsNyArMTk2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0
LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9m
ZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVj
dHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjMsMTEgKzIyMywx
MSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAg
ICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQocmVzdWx0Lm1fb2Zmc2V0ID09IG5v
dEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9
PSBub3RGb3VuZCkgeworICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7
CiAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gVGFrZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0
Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7CiAgICAgICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmgJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
R2V0QnlJZFN0YXR1c19oCiAjZGVmaW5lIEdldEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJv
cGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYv
Tm90Rm91bmQuaD4KIApAQCAtNDYsMTMgKzQ3LDEzIEBAIHB1YmxpYzoKIAogICAgIEdldEJ5SWRT
dGF0dXMoKQogICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKLSAgICAgICAgLCBtX29m
ZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsK
ICAgICB9CiAgICAgCiAgICAgR2V0QnlJZFN0YXR1cygKICAgICAgICAgU3RhdGUgc3RhdGUsIGJv
b2wgd2FzU2VlbkluSklULCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVj
dHVyZVNldCgpLAotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsIEpTVmFsdWUgc3Bl
Y2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9y
PFN0cnVjdHVyZSo+KCkpCisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBK
U1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFp
biA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAg
ICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fY2hhaW4oY2hh
aW4pCkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0
cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgY29uc3Qg
VmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0gLy8g
UmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYgdGhpcyBpcyBhIGRpcmVjdCBhY2Nlc3MuCiAgICAgSlNW
YWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9IC8v
IFJldHVybnMgSlNWYWx1ZSgpIGlmIHRoZXJlIGlzIG5vIHNwZWNpZmljIHZhbHVlLgotICAgIHNp
emVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiAgICAgYm9vbCB3
YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQogICAgIApAQCAt
ODgsNyArODksNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsK
ICAgICBWZWN0b3I8U3RydWN0dXJlKj4gbV9jaGFpbjsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNW
YWx1ZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7
CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwg
NSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVf
d2l0aF90aGlzLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8o
b3BfZ2V0X2J5X2lkLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFj
cm8ob3BfZ2V0X2J5X2lkX291dF9vZl9saW5lLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICov
IFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDkpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfcHJvdG8sIDkpIC8qIGhhcyB2
YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfY2hhaW4sIDkp
IC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApAQCAtMTIyLDkgKzEyMywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3N0cmluZ19sZW5ndGgsIDkpIC8qIGhhcyB2
YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0
aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKKyAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFj
ZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAg
ICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZyb20KICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAotICAgIGlmIChpbnN0
cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKLSAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCks
IGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkCisgICAg
ICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF9vdXRf
b2ZfbGluZSkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdl
dCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmICghaXNW
YWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNl
dCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3LDE4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZyb20KICAgICBBU1NFUlQoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ci0gICAg
ICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
ID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbAorICAgICAgICAgICB8fCBp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmUKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0
dXJlLmdldCgpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUu
c3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CiAgICAgQVNT
RVJUKGNoYWluKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQo
KnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgIGlmIChvZmZzZXQgPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1Y3R1
cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIAogICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFp
biwgb2Zmc2V0KTsKICNlbHNlCkBAIC05NCwyNCArOTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChw
cm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHVi
SW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2Jq
ZWN0U3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0
YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAg
aWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlUmVwbGFjZSwKICAgICAgICAgICAgICAgICBz
dHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAg
ICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwg
MCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OiB7CiAgICAgICAgIEFTU0VSVChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0
aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZh
bGlkYXRlZCgpKTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRy
YW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZz
ZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewog
ICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxl
VHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9u
LnByZXZpb3VzU3RydWN0dXJlLmdldCgpLApAQCAtMTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIHN0dWJJbmZv
LnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0
KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
LCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklU
KQotICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBp
bnZhbGlkT2Zmc2V0KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEy
MTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19o
CiAjZGVmaW5lIFB1dEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1f
bmV3U3RydWN0dXJlKDApCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAs
IG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAg
ICAgewogICAgIH0KICAgICAKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCkKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlKQogICAgICAgICAs
IG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRh
a2VzU2xvd1BhdGgpID09ICFtX29sZFN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0
ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NF
UlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwot
ICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRh
a2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09
IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgSWRlbnRpZmllciYpOwpAQCAtOTAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0K
ICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyZUNoYWluOyB9Ci0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZy
b21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7
CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1
cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiog
bV9zdHJ1Y3R1cmVDaGFpbjsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgbV9vZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJ
KHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNv
bHZlR2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQCBzdGF0
aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yU3RyCiB7CiAgICAgdW5zaWduZWQgYXR0
cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldCgKICAgICAgICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVy
LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBu
b3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJu
IFJlc29sdmVHbG9iYWxTdGF0dXMoKTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0
YXR1cyhSZXNvbHZlR2xvYmFsU3RhdHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVj
aWZpY1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZl
R2xvYmFsU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUg
PHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0
ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91
bmQsCisgICAgICAgIFN0YXRlIHN0YXRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lm
aWNWYWx1ZSA9IEpTVmFsdWUoKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAs
IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKQEAgLTcwLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQ
YXRoOyB9CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZTsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNl
dDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0
OyB9CiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZp
Y1ZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUq
IG1fc3RydWN0dXJlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBt
X29mZnNldDsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29s
dmVHbG9iYWxTdGF0dXMKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzEx
Myw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RydWN0dXJlcy5zaXplKCk7IH0KICAgICAKLSAgICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJv
cGVydHlTdG9yYWdlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0
dXJlc1tpXS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAg
IC8vIENhbGwgdGhpcyBpZiB5b3Uga25vdyB0aGF0IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29u
c2lzdCBvZiBleGFjdGx5CiAgICAgLy8gb25lIHN0cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNp
bmdsZXRvblN0cnVjdHVyZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CShyZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1NSw2ICsyNTUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYWN0aXZhdGlvbikKICAg
ICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKKyAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9PUChv
cF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCkBAIC0zMTksOCArMzIwLDExIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3By
b2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlf
aW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjE2
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
cHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0
dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk1Miw3ICs5NTgsMTAgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBwY1s2XS51
LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMp
OwpAQCAtOTYwLDE2ICs5NjksMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgK
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhd
LnUub3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSk7CisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxp
bmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0
dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNl
dEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSAr
IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24g
MTIxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEwODcsMzEgKzEwODcsNTggQEAgX2xsaW50
X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAotX2xsaW50X29w
X2dldF9ieV9pZDoKKyMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBm
b3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyMgb3Bjb2RlLiBXZSBkbywgaG93ZXZl
ciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UK
KyMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0
X2J5X2lkIHdpbGwgY29udGludWUKKyMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNo
ZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyMgd2Ugd291bGQg
aGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKworbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3Jh
Z2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBn
ZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKLSAgICAj
IG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFu
eXRpbWUgaWYgZmFpbHMsIHNpbmNlCi0gICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVz
dCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQotICAgICMgdG8g
dGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBh
dGgsIHdoaWNoIGlzIHdoYXQKLSAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXku
CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAg
ICAgbG9hZGkgMjBbUENdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRC
eUlkU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJd
LCB0MwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKLSAgICBzdG9yZWkgdDMs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQotICAgIGxvYWRpIDMyW1BDXSwgdDEKLSAgICB2YWx1ZVByb2ZpbGUodDMsIHQyLCB0
MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMs
CisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQor
ICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlk
U2xvdworICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkaSBUYWdP
ZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQyCisgICAgICAgICAgICBzdG9yZWkg
c2NyYXRjaCwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIGxvYWRpIDMyW1BDXSwgdDEKKyAg
ICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MiwgdDEpCisgICAgICAgICAgICBkaXNw
YXRjaCg5KQorICAgICAgICAKKyAgICAgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAgICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgICAgICBkaXNw
YXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKIAotLm9wR2V0QnlJZFNsb3c6Ci0gICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCittYWNy
byB3aXRoSW5saW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGludWF0aW9u
KQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9wZXJ0eSBzdG9yYWdl
LCBhbmQgdGhhdCB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0ZXIgaXMgdW51c2Vk
LgorICAgIGNvbnRpbnVhdGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkKK2VuZAorCittYWNy
byB3aXRoT3V0T2ZMaW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGludWF0
aW9uKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtvYmplY3RdLCBwcm9w
ZXJ0eVN0b3JhZ2UKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIHByb3BlcnR5U3RvcmFnZSByZWdp
c3RlciBub3cgcG9pbnRzIHRvIHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQg
dGhlIG9iamVjdCByZWdpc3RlciBtYXkgYmUgcmV1c2VkCisgICAgIyBpZiB0aGUgb2JqZWN0IHBv
aW50ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorICAgIGNvbnRpbnVhdGlvbihwcm9wZXJ0eVN0
b3JhZ2UsIG9iamVjdCkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQo
d2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToK
KyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJn
dW1lbnRzX2xlbmd0aDoKQEAgLTExMzAsNjggKzExNTcsOTYgQEAgX2xsaW50X29wX2dldF9hcmd1
bWVudHNfbGVuZ3RoOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3B1dF9ieV9pZDoK
K21hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAg
ICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93Ci0gICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MCwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKLSAgICBzdG9yZWkgdDAs
IFRhZ09mZnNldFt0MywgdDFdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0K
LSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisg
ICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAg
ICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dworICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtwcm9w
ZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3By
b3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQp
CitlbmQKIAogLm9wUHV0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfcHV0X2J5X2lkKQogICAgIGRpc3BhdGNoKDkpCiAKK19sbGludF9vcF9wdXRfYnlfaWQ6Cisg
ICAgcHV0QnlJZCh3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKLW1hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0
aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNs
b3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9w
UHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGkgMjBb
UENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0g
ICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQy
KQotICAgIHdyaXRlQmFycmllcih0MSwgdDIpCi0gICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNd
Ci0gICAgbG9hZGkgMjRbUENdLCB0MQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10K
LSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkK
KyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAg
ICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEs
IHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MSwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgICAg
ICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgICAgICAgICBsb2FkaSAyNFtQQ10s
IHQxCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgICAgICAg
ICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBkaXNwYXRj
aCg5KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0
cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAorCittYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
IyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworCisgICAg
bG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwg
c2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAg
ICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwg
TnVsbFRhZywgLmRvbmUKKy5sb29wOgorICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgYnBuZXEgb2xkU3Ry
dWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkcCA0LCBzY3JhdGNoCisg
ICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVd
LCBOdWxsVGFnLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJl
LCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFs
Q2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRp
b25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAgICAgICAgbWFj
cm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNvbnN0IHByb3Rv
Q2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVy
IGZvciB0aGUgcHJvdG8KLSAgICAgICAgCi0gICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0
Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkK
LSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2Ny
YXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQotICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAg
bG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJl
XSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3Rv
Q2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAotICAgICAgICAgICAgYmlu
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxs
VGFnLCAubG9vcAotICAgICAgICAuZG9uZToKLSAgICAgICAgZW5kKQorICAgIHB1dEJ5SWRUcmFu
c2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgorICAgIHB1dEJ5
SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkK
IAogCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS94ODYucmIJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2luZyBjb3B5KQpAQCAtNTU1LDcgKzU1NSwxMSBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgIGVuZAogICAgIAogICAgIGRlZiBoYW5kbGVYODZBZGQoa2lu
ZCkKLSAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9
PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgo
a2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKICAgICAgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgaWYgb3Bl
cmFuZHNbMF0udmFsdWUgPT0gMApAQCAtNTY4LDcgKzU3MiwxMSBAQCBjbGFzcyBJbnN0cnVjdGlv
bgogICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/
IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVn
aXN0ZXJJRAotICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgaWYg
b3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFk
ZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBd
CiAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3t4ODZP
cGVyYW5kcyhraW5kLCBraW5kKX0iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw4ICsxNTMsOCBA
QCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgZm9yIChKU09i
amVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBp
ZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAg
ICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTUxOSwxNyArNTE5LDE3IEBAIGJvb2wgSlNPYmplY3Q6
OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0Owog
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAg
ICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90
Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2Jh
bERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgPT0gV1RG
Ojpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtNTk0LDggKzU5NCw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcigKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBK
U0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgp
LT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwp
OwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9m
ZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRv
cihvYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDI2ICsxNjksMzUgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBv
bmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29u
c3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwor
ICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBz
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9mZnNl
dCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJl
Y3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zm
c2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAg
ICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAg
ICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9u
KTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9u
Rm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlk
T2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAotICAg
ICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb24pIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvckxvY2F0aW9u
KFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gLSBwcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IHJlc3VsdDsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJbklu
bGluZVN0b3JhZ2UgPSBsb2NhdGlvbiAtIGlubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlm
IChvZmZzZXRJbklubGluZVN0b3JhZ2UgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlubGluZVN0b3Jh
Z2VDYXBhY2l0eSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0aW9u
IC0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICAgICAgdmFsaWRhdGVPZmZzZXQocmVzdWx0
LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkgKzIxNCw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAg
ICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0
T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2
YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2
YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qg
b2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KKyAg
ICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25z
dCB7IHJldHVybiBsb2NhbEZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQorICAgICAgICB2b2lk
IHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCkBAIC0yMjks
MTQgKzIzOCw2IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAg
ICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMp
OwogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVy
dHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7
Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICBib29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9y
YWdlLmdldCgpCi0gICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1f
cHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyAr
IDEpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lu
bGluZVN0b3JhZ2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9CiAg
ICAgICAgIHZvaWQgc2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3Rv
cmFnZSwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICBib29sIHJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVj
dHVyZSopOwpAQCAtMzA1LDE3ICszMDYsMjQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcgogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNT
dHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5
U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0gICAg
ICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5
U3RvcmFnZS5nZXQoKTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PENvbnN0UHJvcGVydHlTdG9yYWdlPih0
aGlzICsgMSk7IH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0aGlzICsgMSk7IH0KKyAg
ICAgICAgCisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSBj
b25zdCB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgUHJvcGVy
dHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2Uu
Z2V0KCk7IH0KIAotICAgICAgICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2Nh
dGlvbkZvck9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgICAgICBjb25zdCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XTsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAg
ICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFn
ZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpCisg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdl
KClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCldOwogICAgICAgICB9CiAKICAgICAg
ICAgdGVtcGxhdGU8UHV0TW9kZT4KQEAgLTYxMSwxMCArNjE5LDEwIEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6
OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUp
CiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSkg
ewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2goKQorICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCiAgICAgICAg
ICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKKyAgICAg
ICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGFzT2Jq
ZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsKICAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4ICs2ODQsOCBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnko
KSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlNDZWxs
KiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVj
dHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywg
Y3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3Bl
Y2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewog
ICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rpb24s
IGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5ldyB2
YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uKSkKQEAgLTcwNiw2ICs3MTQsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNl
dCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxs
IGJlbG93LgpAQCAtNzE0LDEzICs3MjMsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzaXplX3Qg
b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBzaXplX3QgY3VycmVudENh
cGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgaWYg
KFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKICAgICAgICAgUHJvcGVydHlTdG9y
YWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCiAgICAgICAgIGlmIChjdXJyZW50
Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAg
ICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVu
dENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCisgICAg
ICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBzZXRQcm9wZXJ0eVN0
b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKICAgICAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzM0LDcgKzc0NCw3IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBj
dXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwog
ICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBj
dXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkg
ewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMg
JiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDYgKzc3OCw3
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwog
ICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OwogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKTsKIApAQCAtODI3LDcgKzgzOCw3IEBAIGlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RXaXRob3V0VHIKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9
IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9w
ZXJ0eVN0b3JhZ2UoKSkKICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVj
dHVyZSgpLT5zdWdnZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwotICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRD
YWxsYWJsZU9iamVjdCh2YWx1ZSkpOwogICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERh
dGEsIG9mZnNldCwgdmFsdWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAg
dm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9i
aiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsK
ICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
b2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkg
eworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0
cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCShyZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNo
VGFibGVfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJVU3RyaW5n
LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5o
PgpAQCAtNzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWdu
ZWQgdikKIAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsK
LSAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1
ZTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0Nl
bGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFByb3BlcnR5TWFwRW50cnkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAg
ICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzUsNyArMTc2LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXJEZWxldGVkT2Zmc2V0cygpOwogICAgIGJvb2wgaGFzRGVsZXRlZE9m
ZnNldCgpOwogICAgIHVuc2lnbmVkIGdldERlbGV0ZWRPZmZzZXQoKTsKLSAgICB2b2lkIGFkZERl
bGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KTsKKyAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKKyAgICAKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXh0T2Zm
c2V0KEpTVHlwZSB0eXBlKTsKIAogICAgIC8vIENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1
cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhlIGNhcGFjaXR5IHByb3ZpZGVkLgogICAgIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVy
LCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CkBAIC0yMzAsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCogbV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAgIHVuc2ln
bmVkIG1fZGVsZXRlZENvdW50OwotICAgIE93blB0cjwgVmVjdG9yPHVuc2lnbmVkPiA+IG1fZGVs
ZXRlZE9mZnNldHM7CisgICAgT3duUHRyPCBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+ID4gbV9kZWxl
dGVkT2Zmc2V0czsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNaW5pbXVtVGFibGVTaXpl
ID0gMTY7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7CkBA
IC0yNjQsOSArMjY3LDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNH
bAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgotICAg
IFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRP
ZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9m
ZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0
ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxldGVkT2Zm
c2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRP
ZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xv
YmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3Qg
UHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0yODgsOSArMjkxLDkgQEAgaW5saW5lIFByb3BlcnR5
VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVs
ZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9m
ZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdl
dCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMp
KTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVy
dHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRh
YmxlOjp+UHJvcGVydHlUYWJsZSgpCkBAIC00NjksMjAgKzQ3MiwzMSBAQCBpbmxpbmUgYm9vbCBQ
cm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2ZmCiAgICAgcmV0dXJuIG1fZGVsZXRlZE9mZnNldHMg
JiYgIW1fZGVsZXRlZE9mZnNldHMtPmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFBy
b3BlcnR5VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFBy
b3BlcnR5VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9
IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBt
X2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFz
dCgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6
OmFkZERlbGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KQoraW5saW5lIHZvaWQgUHJvcGVydHlU
YWJsZTo6YWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYg
KCFtX2RlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIo
bmV3IFZlY3Rvcjx1bnNpZ25lZD4pOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQ
dHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4pOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFw
cGVuZChvZmZzZXQpOwogfQogCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6
bmV4dE9mZnNldChKU1R5cGUgdHlwZSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQor
ICAgICAgICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIAorICAgIGlmICh0eXBlID09
IEZpbmFsT2JqZWN0VHlwZSkKKyAgICAgICAgcmV0dXJuIHNpemUoKTsKKyAgICAKKyAgICByZXR1
cm4gc2l6ZSgpICsgZmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKIGlubGluZSBQYXNzT3duUHRy
PFByb3BlcnR5VGFibGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQo
bmV3Q2FwYWNpdHkgPj0gbV9rZXlDb3VudCk7CkBAIC00OTksNyArNTEzLDcgQEAgaW5saW5lIHNp
emVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcgogewogICAgIHNpemVfdCByZXN1bHQgPSBz
aXplb2YoUHJvcGVydHlUYWJsZSkgKyBkYXRhU2l6ZSgpOwogICAgIGlmIChtX2RlbGV0ZWRPZmZz
ZXRzKQotICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBz
aXplb2YodW5zaWduZWQpKTsKKyAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5j
YXBhY2l0eSgpICogc2l6ZW9mKFByb3BlcnR5T2Zmc2V0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlP
ZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlPZmZzZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0
eU9mZnNldF9oCisjZGVmaW5lIFByb3BlcnR5T2Zmc2V0X2gKKworI2luY2x1ZGUgIkpTVHlwZS5o
IgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElO
TElORV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNlbHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NB
UEFDSVRZIDQKKyNlbmRpZgorCit0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGlj
IGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQ
cm9wZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBB
Q0lUWTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9
IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIEFTU0VS
VChvZmZzZXQgPj0gaW52YWxpZE9mZnNldCk7Cit9CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgVU5VU0VEX1BBUkFN
KG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIEFTU0VSVChvZmZzZXQgPj0g
aW52YWxpZE9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0CisgICAg
ICAgICAgIHx8IHR5cGUgPT0gRmluYWxPYmplY3RUeXBlCisgICAgICAgICAgIHx8IGlzT3V0T2ZM
aW5lT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NF
UlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNl
dChvZmZzZXQsIHR5cGUpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQor
CitpbmxpbmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dDsKK30KKworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCA8IGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eTsKK30KKworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJv
cGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0
dXJuICFpc0lubGluZU9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldElu
SW5saW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZz
ZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0
dXJuIG9mZnNldDsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7Cisg
ICAgQVNTRVJUKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBvZmZzZXQg
LSBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZk91dE9m
TGluZVNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hl
Y2tPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0IDwgZmlyc3RPdXRPZkxpbmVPZmZzZXQp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvZmZzZXQgLSBmaXJzdE91dE9mTGluZU9m
ZnNldCArIDE7Cit9CisKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNldChv
ZmZzZXQsIHR5cGUpOworICAgIGlmICh0eXBlID09IEZpbmFsT2JqZWN0VHlwZSkKKyAgICAgICAg
cmV0dXJuIG9mZnNldCArIDE7CisgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JM
YXN0T2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJvcGVy
dHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBj
aGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGlmICh0eXBlICE9IEZpbmFsT2JqZWN0VHlw
ZSAmJiBvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIGZpcnN0T3V0T2ZM
aW5lT2Zmc2V0OworICAgIHJldHVybiBvZmZzZXQgKyAxOworfQorCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4g
bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKGludmFsaWRPZmZzZXQsIHR5cGUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFByb3BlcnR5T2Zmc2V0X2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDEyMTYy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNs
dWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL05vdEZvdW5kLmg+CkBAIC04OSw3ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBDYWNoZWRQcm9wZXJ0eVR5cGUgY2FjaGVkUHJvcGVydHlUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRQcm9wZXJ0eVR5cGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlICE9IFVuY2FjaGVhYmxlOyB9CiAgICAgICAg
IGJvb2wgaXNDYWNoZWFibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlU
eXBlID09IFZhbHVlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZz
ZXQ7CkBAIC0xMDQsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX3Zh
bHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0VmFsdWUo
SlNWYWx1ZSBzbG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAg
dm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAg
ICAgICAgICBtX2dldFZhbHVlID0gSlNDX1ZBTFVFX01BUktFUjsKQEAgLTE2MCw3ICsxNjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXJGdW5jID0gZ2V0dGVy
RnVuYzsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChK
U1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgb2Zmc2V0KQor
ICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNP
YmplY3QqIGdldHRlckZ1bmMsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKGdldHRlckZ1bmMpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEdF
VFRFUl9GVU5DVElPTl9NQVJLRVI7CkBAIC0yMDYsNyArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENsZWFyIG9mZnNldCBldmVuIGluIHJlbGVhc2Ug
YnVpbGRzLCBpbiBjYXNlIHRoaXMgUHJvcGVydHlTbG90IGhhcyBiZWVuIHVzZWQgYmVmb3JlLgog
ICAgICAgICAgICAgLy8gKEZvciBvdGhlciBkYXRhIG1lbWJlcnMsIHdlIGRvbid0IG5lZWQgdG8g
Y2xlYXIgYW55dGhpbmcgYmVjYXVzZSByZXVzZSB3b3VsZCBtZWFuaW5nZnVsbHkgb3ZlcndyaXRl
IHRoZW0uKQotICAgICAgICAgICAgbV9vZmZzZXQgPSAwOworICAgICAgICAgICAgbV9vZmZzZXQg
PSBpbnZhbGlkT2Zmc2V0OwogICAgICAgICAgICAgbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPSBVbmNh
Y2hlYWJsZTsKICAgICAgICAgfQogCkBAIC0yMzIsNyArMjMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICAgICAgSlNWYWx1ZSBtX3RoaXNWYWx1ZTsK
IAotICAgICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zm
c2V0OwogICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUgbV9jYWNoZWRQcm9wZXJ0eVR5cGU7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlT
bG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJv
cGVydHlTbG90LmgJKHJldmlzaW9uIDEyMTYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
c2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAg
ICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9IEV4aXN0aW5nUHJvcGVy
dHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAgICAgICAgbV9vZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KEpTT2JqZWN0
KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KEpTT2Jq
ZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1fdHlwZSA9IE5ld1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKQEAgLTY0
LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFVuY2FjaGFibGU7IH0KLSAgICAgICAgc2l6
ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0KCkgY29uc3QgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgICAg
ICBKU09iamVjdCogbV9iYXNlOwotICAgICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAg
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAkocmV2aXNpb24gMTIxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFN0cnVjdHVyZTo6
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fY2xhc3NJbmZvKGNsYXNzSW5m
bykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykK
ICAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkodHlwZUluZm8uaXNGaW5hbE9iamVjdCgp
ID8gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgOiAwKQotICAgICwgbV9vZmZz
ZXQobm9PZmZzZXQpCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0
aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlU
YWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAg
LTE4MCw3ICsxODAsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
CiAgICAgLCBtX2NsYXNzSW5mbygmc19pbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldChJbml0aWFsaXplZFdhdGNoaW5nKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgwKQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zm
c2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBt
X2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcyhmYWxzZSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2aW91cy0+bV9jbGFzc0lu
Zm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcp
CiAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHByZXZpb3VzLT5tX3Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX29mZnNldChp
bnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91cy0+bV9kaWN0aW9u
YXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9o
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZpb3VzLT5tX2hhc0dldHRlclNldHRlclByb3Bl
cnRpZXMpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJv
cGVydHlNYXAoSgogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxl
KTsKICAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3ByZXZpb3VzKTsKIAotICAgICAg
ICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHko
Z2xvYmFsRGF0YSwgMCwgbV9vZmZzZXQgKyAxKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlUYWJs
ZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG51bWJl
ck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXpl
UHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAg
ICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQcm9wZXJ0
eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCkpOwogCiAgICAgZm9yIChw
dHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsKICAgICAg
ICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0CiAgICAgZW50cnktPnNwZWNpZmljVmFs
dWUuY2xlYXIoKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CkBAIC0y
OTYsNyArMjk2LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAog
ICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJblByZXZpb3VzID0gZXhpc3RpbmdUcmFuc2l0
aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpOwogICAgICAgICBpZiAoc3BlY2lm
aWNWYWx1ZUluUHJldmlvdXMgJiYgc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgIT0gc3BlY2lmaWNW
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFu
c2l0aW9uLT5tX29mZnNldCAhPSBub09mZnNldCk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4
aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAg
b2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4
aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
CitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVy
dHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rp
b24sIHdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxy
ZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRy
aWJ1dGVzLCBidXQKQEAgLTM2MSw3ICszNjEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6
ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTgg
KzU0OCwxOSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAg
ICAgICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAg
ICAgICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAK
ICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zm
c2V0ID0gZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAg
IFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAg
ICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJs
ZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1
ZXNbaV0gPSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAg
ICAgLy8gVXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZz
ZXRzCi0gICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zm
c2V0ID0gaSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBD
b3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlv
bnMKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykK
LSAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVl
c1tpXSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBm
aXJzdE9mZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5j
bGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAot
c2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3
OSwxMyArNTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4K
ICAgICAKICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVl
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIGlmIChwcm9wZXJ0
eVN0b3JhZ2VTaXplKCkgPiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBncm93
UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXpl
X3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hl
KTsKQEAgLTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdp
dGhvdXRUCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhn
bG9iYWxEYXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJv
cGVydHlOYW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVy
dHlOYW1lKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBA
QCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBh
ZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBv
d25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBu
b09mZnNldCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5
VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlU
YWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9GZnNldChtX29m
ZnNldCkpKTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
JiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAKICAgICBtYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9m
ZnNldDsKIAogICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5m
aW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAg
ICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwogICAgIHNwZWNpZmljVmFsdWUgPSBl
bnRyeS0+c3BlY2lmaWNWYWx1ZS5nZXQoKTsKQEAgLTY4NSw5ICs2ODUsOSBAQCB2b2lkIFN0cnVj
dHVyZTo6ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKEpTCiAgICAgICAgIGl0ZXItPnNwZWNpZmljVmFs
dWUuY2xlYXIoKTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVj
dHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSkKIHsKLSAgICBBU1NFUlQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gbm90
Rm91bmQpOworICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChhdHRyaWJ1dGVz
ICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNw
ZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgY3Jl
YXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVkIG5ld09mZnNldDsKLQotICAgIGlmICht
X3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgbmV3T2Zmc2V0ID0g
bV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgZWxzZQotICAgICAgICBu
ZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBu
ZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRPZmZzZXQobV90eXBlSW5mby50eXBlKCkp
OwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShnbG9iYWxEYXRh
LCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOwogCkBA
IC03MTEsNyArNzA2LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0ds
bwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1v
dmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7
CiAKQEAgLTcyNCw3ICs3MTksNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlO
YW1lIHByCiAgICAgaWYgKCFwb3NpdGlvbi5maXJzdCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAogICAgIG1fcHJv
cGVydHlUYWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZERl
bGV0ZWRPZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0
aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRk
UHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9m
ZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFBy
b3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYg
b2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBh
ZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9w
ZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlPZmZzZXQmIG9mZnNldCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
Pj0gcHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpOworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGN1cnJlbnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZz
ZXQobV9vZmZzZXQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID49IGN1cnJlbnRTaXplKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNp
emUgPT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgICAgIH0KQEAgLTEyNyw4
ICsxMjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24u
ICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRo
aXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0K
QEAgLTE0OSwxOCArMTQ5LDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmVD
aGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBTdHJ1
Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9CisgICAgICAgIFN0cnVj
dHVyZSogcHJldmlvdXNJRCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4g
bV9wcmV2aW91cy5nZXQoKTsKKyAgICAgICAgfQogICAgICAgICBib29sIHRyYW5zaXRpdmVseVRy
YW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1Y3R1cmVUb0ZpbmQpOwogCiAgICAgICAgIHZv
aWQgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7Ci0gICAgICAgIHVuc2lnbmVkIHByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsgfQotICAg
ICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gKG1fcHJvcGVydHlUYWJsZSA/
IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpIDogc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fb2Zmc2V0ICsgMSkpOyB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFj
aXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNz
SW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZz
ZXQobV9vZmZzZXQpOworICAgICAgICB9CiAgICAgICAgIHNpemVfdCBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0
OwogCi0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBu
YW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xv
YmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNw
ZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBi
b29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBj
b25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVk
aW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsxOTEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgYm9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Tm9uRW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNF
bXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAgICAgICAg
ICByZXR1cm4gIWlzVmFsaWRPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CiAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9i
YWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5j
dGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNp
ZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQpAQCAtMjczLDggKzI5Miw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rp
b25hcnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoUHJvcGVydHlOYW1lKTsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHZvaWQgY3JlYXRl
UHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAgICAgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KCk7CkBAIC0zMDEsNyArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGludCB0cmFuc2l0aW9uQ291bnQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBT
aW5jZSB0aGUgbnVtYmVyIG9mIHRyYW5zaXRpb25zIGlzIGFsd2F5cyB0aGUgc2FtZSBhcyBtX29m
ZnNldCwgd2Uga2VlcCB0aGUgc2l6ZSBvZiBTdHJ1Y3R1cmUgZG93biBieSBub3Qgc3RvcmluZyBi
b3RoLgotICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zm
c2V0ICsgMTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICsz
MjksNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4
VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZz
ZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5j
dGlvblRocmFzaENvdW50ID0gMzsKIAogICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAt
MzM5LDcgKzM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1aW50MzJfdCBtX3Byb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5OwogCiAgICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFjY291
bnQgZm9yIGFub255bW91cyBzbG90cwotICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogCiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFyeUtp
bmQgOiAyOwogICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAgLTM1
MywyNiArMzcwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRp
Y0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFt
X3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAg
ICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRy
eSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwotICAg
ICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJl
dHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAotICAg
IGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAg
ewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwog
ICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAg
ICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVydHlN
YXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1w
bCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZv
dW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNl
dDsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JV
bmRlZmluZWQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150339</attachid>
            <date>2012-07-01 15:50:54 -0700</date>
            <delta_ts>2012-07-01 16:09:38 -0700</delta_ts>
            <desc>it grows!</desc>
            <filename>overflowstorage_patch_4.diff</filename>
            <type>text/plain</type>
            <size>104437</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MiBA
QAorMjAxMi0wNy0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFk
T3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OlB1dEJ5SWRTdGF0dXMpOgor
ICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUHV0QnlJZFN0
YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29s
dmVHbG9iYWxTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6UmVz
b2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6Om9m
ZnNldCk6CisgICAgICAgIChSZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKFN0cnVjdHVyZVNldCk6CisgICAgICAgICogaGVh
cC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1v
dmVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0TG9jYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldCk6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojph
ZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc0lu
bGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9i
amVjdDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlND
OjpKU0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0
b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRp
dmUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAg
KFByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9w
ZXJ0eU1hcEVudHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJs
ZTo6Z2V0RGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERl
bGV0ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9y
eSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRh
dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
aXNJbmxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAg
ICAgIChKU0M6Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0T2ZMaW5lU2xvdHNG
b3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQp
OgorICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAgICAgICAoSlNDOjpm
aXJzdFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5o
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6CisgICAgICAgIChK
U0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6
OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNs
ZWFyT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAg
ICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0
UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJvcGVydHlTbG90KToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpvdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5l
U2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9m
TGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpvdXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJbmxpbmVTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvdGFsU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTItMDYtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdCB3YXN0ZXMgdG9vIG11Y2ggbWVtb3J5IG9u
IHVudXNlZCBwcm9wZXJ0eSBzbG90cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiAr
MTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWQiOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICAgICAgb3AgPSAiZ2V0
X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3NlbGYiOwogICAgICAgICBicmVhazsK
QEAgLTQ5MSw3ICs0OTQsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmVzKGNvbnN0
IEluCiAgICAgICAgIGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25P
ZmZzZXQsICJnZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUu
c3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUu
c3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRf
YnlfaWQpKSB7CisgICAgICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9wdXRfYnlfaWQpIHx8IHZQQ1swXS51LikgewogICAgICAgICBwcmludFN0cnVj
dHVyZSgicHV0X2J5X2lkIiwgdlBDLCA0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEw
MzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWluOgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsK
KyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3Rh
dGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291
dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6
IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIElu
c3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGlu
ZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlv
bls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpAQCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAg
ICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJ
ZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qg
b2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50
LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBu
b3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2UsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZz
ZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAgICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1
cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEo
KSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVz
dWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQu
bV9vZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVj
dHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAgLTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNW
YWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1
Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1Zh
bHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRP
ZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1
Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTc5LDcgKzE3OSw3
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAg
IHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lm
aWNWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9PSBub3RG
b3VuZCkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkgewogICAg
ICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVy
ZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFs
aWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9z
dHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIzLDExICsy
MjMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0K
ICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNldCA9
PSBub3RGb3VuZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZz
ZXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQubV9vZmZz
ZXQgPT0gbm90Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0
KSkgewogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAgICAgIHJl
c3VsdC5tX3N0cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFpbi5jbGVh
cigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIEdldEJ5SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUg
IlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSA8
d3RmL05vdEZvdW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICBHZXRC
eUlkU3RhdHVzKCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAgICAgICwg
bV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAg
ICB7CiAgICAgfQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRlIHN0YXRl
LCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQgPSBT
dHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBKU1ZhbHVl
IHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZl
Y3RvcjxTdHJ1Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxpZE9mZnNl
dCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4g
Y2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQog
ICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX2NoYWlu
KGNoYWluKQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0
JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIGNv
bnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9
IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzLgogICAg
IEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZTsg
fSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1ZS4KLSAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogICAgIGJv
b2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAgICAK
QEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVT
ZXQ7CiAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBtX3NwZWNp
ZmljVmFsdWU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zm
c2V0OwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsx
MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jh
c2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9yZXNv
bHZlX3dpdGhfdGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1h
Y3JvKG9wX2dldF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAg
IG1hY3JvKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGlu
ZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMgdmFsdWUg
cHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2NoYWlu
LCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWxfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3Jl
cGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGcm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAgICBpZiAo
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0
YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZAor
ICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRf
b3V0X29mX2xpbmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAo
IWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBv
ZmZzZXQpOwogICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGluc3RydWN0
aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdAot
ICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9w
Y29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAgICAgICAg
fHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bj
b2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7
CiAgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0
cnVjdHVyZS5nZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOwogICAg
IEFTU0VSVChjaGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAob2Zmc2V0
ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmV3U3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwg
Y2hhaW4sIG9mZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBj
YXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
c3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFz
ZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2Jh
bERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAog
ICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAs
IDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3Nf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVu
SW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5
SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAogICAgICAg
ICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAo
b2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
IHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNp
bXBsZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNp
dGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBAIFB1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBzdHVi
SW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAgICAgIG9m
ZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhU
YWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAgIAog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8gRU5BQkxF
KEpJVCkKLSAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgaW52YWxpZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lv
biAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5SWRTdGF0
dXNfaAogI2RlZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0
LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTUs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAgICAgICAg
LCBtX25ld1N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkKLSAgICAg
ICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAgIHNpemVf
dCBvZmZzZXQpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgOiBtX3N0
YXRlKHN0YXRlKQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKICAgICAg
ICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9
PSBUYWtlc1Nsb3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1f
c3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAgICAgICAg
QVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVyZUNoYWlu
KTsKLSAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9
PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAgICAgQVNT
RVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRo
KSA9PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0dXJl
OyB9CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJ1Y3R1cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
b2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmll
ciYpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3Ry
dWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlQ2hh
aW4qIG1fc3RydWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5
T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDkgQEAg
c3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cgogewogICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnRp
ZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChvZmZzZXQg
PT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHJl
dHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAgICAgcmV0dXJuIFJlc29sdmVHbG9i
YWxTdGF0dXMoUmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxlLCBzdHJ1Y3R1cmUsIG9mZnNldCwg
c3BlY2lmaWNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1c19oCiAK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNs
dWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAgICAgICAg
U3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNldCA9IG5v
dEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1ZhbHVlIHNw
ZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAg
ICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVibGljOgog
ICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNT
bG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
ZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Bl
Y2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0
dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBjbGFzcyBS
ZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE1
ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2luZ0lubGlu
ZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFtX3N0
cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAK
ICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNldCBtdXN0
IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3RydWN0dXJl
KiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDcg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogICAgIH0KIAogICAg
IGlmIChpc0pTRmluYWxPYmplY3QoY2VsbCkpIHsKLSAgICAgICAgSlNPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CisgICAgICAgIEpTRmlu
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hY3RpdmF0aW9u
KQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxs
KQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9hcmd1bWVudHNfbGVu
Z3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4ICszMjAsMTEg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29w
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgaWYg
KGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQp
OworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtOTUyLDcgKzk1OCwxMCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0g
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIHBj
WzZdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEs
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4o
ZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4u
c2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBpZiAo
cGNbOF0udS5vcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xp
bmUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIHBjWzVdLnUu
b3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0g
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFs
dWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA4NywzMSArMTA4Nyw1OCBAQCBf
bGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkKIAogCi1fbGxp
bnRfb3BfZ2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNo
aW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQorIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRo
ZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3
IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorIyB3ZSB3
b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNybyBnZXRCeUlkKGdldFByb3BlcnR5
U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBXZSBvbmx5IGRvIG1vbm9tb3Jw
aGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQot
ICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFu
Z2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBB
dCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCi0gICAg
IyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNs
b3cgcGF0aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFu
eXdheS4KICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xv
dykKICAgICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3Qw
LCB0Ml0sIHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgotICAgIHN0b3Jl
aSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0Mywg
dDIsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAg
ICB0MywKKyAgICAgICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0
Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdl
dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICAgICAgICAgIGxvYWRp
IFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKKyAgICAgICAgICAgIHN0
b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZGkgMzJbUENdLCB0
MQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQyLCB0MSkKKyAgICAgICAgICAg
IGRpc3BhdGNoKDkpCisgICAgICAgIAorICAgICAgICAub3BHZXRCeUlkU2xvdzoKKyAgICAgICAg
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgICAg
IGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkK
K21hY3JvIHdpdGhJbmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51
YXRpb24pCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5IHN0
b3JhZ2UsIGFuZCB0aGF0IHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBpcyB1
bnVzZWQuCisgICAgY29udGludWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQorZW5kCisK
K21hY3JvIHdpdGhPdXRPZkxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250
aW51YXRpb24pCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW29iamVjdF0s
IHByb3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdl
IHJlZ2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQg
dGhhdCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmpl
Y3QgcG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3Bl
cnR5U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0
QnlJZCh3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1Nyw5NiBAQCBfbGxpbnRfb3BfZ2V0
X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5
X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93
KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3Jl
aSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMs
IHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0
MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gp
CisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93CisgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJh
cnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0
W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAg
IGVuZCkKK2VuZAogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAorX2xsaW50X29wX3B1dF9ieV9p
ZDoKKyAgICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAotbWFj
cm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKworbWFjcm8gcHV0QnlJZFRy
YW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRC
eUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
LCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2Fk
aSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwg
dDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0
MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRj
aCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAor
ICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRk
cCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisg
ICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0
W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAg
ICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRp
c3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mo
b2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tz
KG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1
cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisK
KyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBz
Y3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0
Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBv
bGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0
Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1
Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0
aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9B
ZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAg
ICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3Qg
cHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVn
aXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwg
c2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sg
ZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hd
LCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAg
ICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1
Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUs
IFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAg
ICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJ
ZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisK
K19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAg
cHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9y
YWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDEx
IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFk
ZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBp
ZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3Ry
dWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19h
PyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQp
fSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAg
ICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0
cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAj
e3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMjQgKzkz
LDU0IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKICAgICBib29s
IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
ID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7Cisg
ICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpOworICAgICAgICAvLyBXZSBoYXZlIHRo
aXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9m
IHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KKyAgICAgICAgdm9p
ZCogdGVtcCA9IHN0b3JhZ2U7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwg
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOwor
ICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKKyAg
ICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdl
QmFycmllcjo6VW5jaGVja2VkKTsKKyAgICB9CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmhl
cml0b3JJRCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9y
SUQpOworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
OworI2VuZGlmCit9CiAKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Cit2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0ZpbmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29s
IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKIAotICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
ID0gdGhpc09iamVjdC0+cHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXpl
ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBp
ZiAodGhpc09iamVjdC0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwotICAgIGVsc2UgeworICAgIFByb3Bl
cnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAg
IGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOwogICAgICAg
ICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBm
b3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVy
cy4KICAgICAgICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFu
ZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNs
b3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAs
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsK
ICAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0g
ICAgICAgIHRoaXNPYmplY3QtPm1fcHJvcGVydHlTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdl
QmFycmllcjo6VW5jaGVja2VkKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9y
YWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAg
ICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwogCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoaW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7
CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAj
ZW5kaWYKQEAgLTE1Myw4ICsxODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhCiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBh
c09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTUxOSwxNyAr
NTQ5LDE3IEBAIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEKICAgICBp
ZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90
Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52
YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkp
OwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERp
cmVjdE9mZnNldChvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1ICs1ODksMjIg
QEAgU3RydWN0dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAgIHJldHVybiBt
X2luaGVyaXRvcklELmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dQ
cm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVT
dG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBu
ZXdTaXplKQogewogICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICAvLyBJdCdz
IGltcG9ydGFudCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIHNp
bmNlCiAgICAgLy8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zaXRpb24uCiAK
LSAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3Jh
Z2UuZ2V0KCk7CisgICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fb3V0
T2ZMaW5lU3RvcmFnZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9y
YWdlID0gMDsKIAotICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgaWYgKCFv
bGRQcm9wZXJ0eVN0b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAg
aGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVy
ZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBuZXdQ
cm9wZXJ0eVN0b3JhZ2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRyeUFsbG9jYXRl
U3RvcmFnZShzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdTaXplLCAmdGVt
cCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBz
dGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9wZXJ0eVN0b3Jh
Z2VbaV0gPSBvbGRQcm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
V2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRo
ZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAg
ICAgICAgIHZvaWQqIHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQsOCArNjIxLDgg
QEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9m
ZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZv
dW5kKQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7Cisg
ICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNl
dCksIGF0dHJpYnV0ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNCAr
NzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAg
Ly8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgfTsKIAotI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDYKLSNl
bHNlCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKLSNlbmRp
ZgotCi1DT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
Pj0gMCksIGZpbmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsKLQogICAgIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE2OSwyNiArMTYxLDM1
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgLy8g
VGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgICAg
ICBKU1ZhbHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zm
c2V0KSA6IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdE9mZnNldChv
ZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVj
a09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpIDogMDsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHJldHVy
biBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAw
OwogICAgICAgICB9CiAKLSAgICAgICAgc2l6ZV90IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIC0gcHJvcGVydHlT
dG9yYWdlKCk7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdl
KCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIHZh
bGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5z
aXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTIwNSw5ICsyMDYsOSBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgcHV0
T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVy
dHkgb2Zmc2V0cy4KLSAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAg
ICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNl
dFVuZGVmaW5lZCgpOyB9CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9jYWxGb3JPZmZzZXQob2Zmc2V0KS0+Z2V0
KCk7IH0KKyAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQorICAgICAgICB2
b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBs
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIApAQCAtMjI4LDI0ICsyMjksMTYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7
IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAgICAg
IHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd1Byb3BlcnR5U3Rv
cmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwotICAg
ICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPQotICAgICAgICAgICAgICAgICFtX3Byb3BlcnR5U3RvcmFnZS5n
ZXQoKQotICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3Bl
cnR5U3RvcmFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsK
LSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAg
ICB2b2lkIHNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2Us
IFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2Ug
Z3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplKTsKKyAgICAgICAgdm9pZCBzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICBib29s
IHJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxs
b2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNp
dHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVT
dG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAg
dm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgdm9pZCogYWRkcmVzc09m
T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmbV9wcm9w
ZXJ0eVN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4gJm1fb3V0T2ZMaW5lU3RvcmFnZTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQpAQCAtMjYxLDcgKzI1NCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKLSAgICAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5oZXJp
dG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwpAQCAtMjg3LDcgKzI4MCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtl
bHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2
ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAg
ICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OwogICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpA
QCAtMzA1LDE3ICsyOTgsMzMgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsK
ICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3Bl
cnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5n
ZXQoKTsgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBz
dHJ1Y3R1cmUoKS0+aGFzSW5saW5lU3RvcmFnZSgpOyB9CisgICAgICAgIENvbnN0UHJvcGVydHlT
dG9yYWdlIGlubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoaGFzSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQ
cm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Q29uc3RQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZM
aW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQogCi0gICAg
ICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNp
emVfdCBvZmZzZXQpIGNvbnN0CisgICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOworICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOworICAg
ICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKG9mZnNldCldOwogICAgICAgICB9CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKKyAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJnByb3BlcnR5U3RvcmFnZSgpW29mZnNl
dF07CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0
KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2Uob2Zmc2V0KV07CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTxQdXRN
b2RlPgpAQCAtMzI3LDcgKzMzNiw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnko
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJlKiBjcmVh
dGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBTdG9yYWdlQmFycmllciBt
X3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9vdXRPZkxpbmVTdG9y
YWdlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2luaGVyaXRvcklEOwogICAg
IH07CiAKQEAgLTM1MywxNCArMzYyLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3IKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNOb25GaW5h
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIDApCisgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEpOwotICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT50
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7
CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzgxLDYgKzM5MCw4IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpCkBA
IC0zODgsMTEgKzM5OSwxNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIHByb3RlY3RlZDoK
KyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuQ29tbW9uKFNsb3RWaXNpdG9yJik7CisgICAgICAg
IAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9p
bmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7Ci0gICAgICAgICAgICBBU1NFUlQodGhp
cy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVj
dHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAg
ICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkg
PT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8o
KSk7CiAgICAgICAgIH0KIApAQCAtNDAwLDEzICs0MTQsMTMgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICAgICAg
OiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKKyAgICAg
ICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBK
U09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiBtX2lubGluZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHld
OworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtJTkxJ
TkVfU1RPUkFHRV9DQVBBQ0lUWV07CiAgICAgfTsKIAogaW5saW5lIEpTRmluYWxPYmplY3QqIEpT
RmluYWxPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtNDMxLDkgKzQ0NSw5IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3QKICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5l
U3RvcmFnZSk7CiB9CiAKLWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkKK2lubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpCiB7Ci0gICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0
b3JhZ2UpOworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fb3V0T2ZMaW5l
U3RvcmFnZSk7CiB9CiAKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9y
SUQoKQpAQCAtNDcxLDE0ICs0ODUsMTggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFs
VGhpcygpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0g
R2xvYmFsVGhpc1R5cGU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm9wZXJ0eVN0
b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0T3V0T2ZMaW5l
U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZSk7CiAgICAgQVNT
RVJUKHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkKLSAgICAgICAgICAgfHwgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8gJiYgc3RhdGljX2Nhc3Q8dm9pZCo+KHN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0
aGlzICsgMSkpKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0
T2ZMaW5lU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5l
U2l6ZSgpKTsKKyAgICB9CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0b3JhZ2UpOwor
ICAgIG1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CiB9
CiAKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxNiw5ICs1MzQsOSBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlLmFz
Q2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZSkKK2lubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCBpbmxpbmVTdG9y
YWdlKQorICAgICwgbV9vdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIDApCiB7CiB9
CiAKQEAgLTU0MiwxOSArNTYwLDYgQEAgaW5saW5lIFN0cnVjdHVyZSogSlNPYmplY3Q6OmluaGVy
aXRvcklEKAogICAgIHJldHVybiBjcmVhdGVJbmhlcml0b3JJRChnbG9iYWxEYXRhKTsKIH0KIAot
aW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0Ci17
Ci0gICAgaWYgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCi0gICAgICAg
IHJldHVybiBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eTsKLSAgICByZXR1cm4g
MDsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjppc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gaW5saW5lU3Rv
cmFnZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09
IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpOwotfQotCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKIHsKICAgICByZXR1cm4gY2xhc3NJbmZv
KCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKQEAgLTYxMSwxMCArNjE2LDEwIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0Nl
bGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5h
bWUpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
KSkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2goKQorICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCiAgICAg
ICAgICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKKyAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGFz
T2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4ICs2ODEsOCBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlND
ZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRl
cywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCkt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50
U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkg
ewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rp
b24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5l
dyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1
cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKSkKQEAgLTcwMCwxMyArNzA1LDE0IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYm
ICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAgICAgICBp
ZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkpCi0gICAgICAgICAg
ICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUo
KS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1By
b3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdl
ID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxH
cm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRP
ZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwog
ICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24p
OwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3Ry
dWN0dXJlKCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0
b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJl
KCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChv
ZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlKCktPnRvdGFsU3RvcmFn
ZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwg
YmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTcxNCwxNSArNzIwLDE2
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVu
dENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
dGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5j
dGlvbiwgb2Zmc2V0KSkgewotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHBy
b3BlcnR5U3RvcmFnZSgpOyAKLSAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBuZXdTdG9yYWdlID0g
Z3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0KLSAgICAgICAgQVNTRVJUKG9mZnNldCA8
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIHNldFByb3Bl
cnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOworICAgICAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsgCisgICAgICAg
IGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQor
ICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEs
IGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKworICAg
ICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3Ry
dWN0dXJlLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJl
Y3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMg
YSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3Qg
Y3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1
bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc0MSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAg
ICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3Vy
cmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkg
eworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUg
PT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc3NSw4IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJl
KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsK
ICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQg
PCBzdHJ1Y3R1cmUtPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHNldFN0cnVjdHVyZUFu
ZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAog
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTc4MSwy
MiArNzg5LDIyIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAog
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZO
ZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5l
d1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKG9sZENh
cGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgCi0gICAg
aWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkgeworICAgIGlmIChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpIHsKICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0
b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKAotICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBh
Y2l0eSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAg
ICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKAorICAg
ICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2Us
IG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVB
bmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIGdsb2JhbERh
dGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOwogfQog
CiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQpAQCAtODI0LDExICs4MzIsMTEgQEAgaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNz
b3IpKTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgp
OwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAg
ICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRO
ZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAgc2V0UHJvcGVydHlT
dG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKKyAgICBQcm9wZXJ0
eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RydWN0
dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdTdG9yYWdl
ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlU2l6
ZSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9i
YWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGds
b2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsx
MzAsOCBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgZm9y
ICg7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5v
dEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYg
KzIxLDcgQEAKICNpZm5kZWYgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogI2RlZmluZSBQcm9wZXJ0
eU1hcEhhc2hUYWJsZV9oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUg
IlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFRhYmxlLmg+CkBAIC03MiwxMSArNzMsMTEgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRQb3dlck9m
Mih1bnNpZ25lZCB2KQogCiBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSB7CiAgICAgU3RyaW5nSW1w
bCoga2V5OwotICAgIHVuc2lnbmVkIG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7
CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBzcGVj
aWZpY1ZhbHVlOwogCi0gICAgUHJvcGVydHlNYXBFbnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwqIGtleSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCisgICAgUHJvcGVydHlNYXBF
bnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwq
IGtleSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCiAgICAgICAgIDoga2V5KGtleSkKICAgICAgICAgLCBvZmZzZXQob2Zm
c2V0KQogICAgICAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykKQEAgLTE3NSw3ICsxNzYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBoYXNE
ZWxldGVkT2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIHZvaWQgYWRkRGVsZXRl
ZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0
IG5leHRPZmZzZXQoSlNUeXBlIHR5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFi
bGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQu
CiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4g
PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1U
YWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4
ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0
aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFBy
b3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGlu
ZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVk
T2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQ
cm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsK
ICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zm
c2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zm
c2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAor
ICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAg
IEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNp
dHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9m
ZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAi
SlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2YgVVNFKEpTVkFMVUUzMl82NCkKKyNk
ZWZpbmUgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNgorI2Vsc2UKKyNkZWZpbmUgSU5MSU5FX1NU
T1JBR0VfQ0FQQUNJVFkgNAorI2VuZGlmCisKK3R5cGVkZWYgaW50IFByb3BlcnR5T2Zmc2V0Owor
CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOworc3RhdGlj
IGNvbnN0IFByb3BlcnR5T2Zmc2V0IGlubGluZVN0b3JhZ2VDYXBhY2l0eSA9IElOTElORV9TVE9S
QUdFX0NBUEFDSVRZOworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5l
T2Zmc2V0ID0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworCitpbmxpbmUgdm9pZCBjaGVja09mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cisg
ICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNTRVJUKG9m
ZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZz
ZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAgICAgfHwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOwor
ICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxp
ZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0
IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsK
KyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3Qg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxp
ZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsK
KyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJu
IG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGlu
ZU9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFz
dE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNr
T2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQor
ICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVT
bG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5l
eHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQor
eworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxP
YmplY3RUeXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmly
c3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQ
cm9wZXJ0eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAg
IHJldHVybiBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNp
b24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0K
ICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQ
cm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNv
bnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVy
biBtX29mZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBz
ZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQor
ICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcg
KzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMg
PSBnZXR0ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RC
YXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZh
bHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4g
cmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBi
ZWZvcmUuCiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3Qg
bmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBv
dmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBt
X29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlw
ZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhp
c1ZhbHVlOwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgbV9vZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5
VHlwZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQ
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0
ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0
KQorICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3Rp
bmdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29m
ZnNldCA9IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHko
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVy
dHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNl
OwpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wg
aXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAg
ICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7
CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUo
Z2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZv
KQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQot
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkg
PyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNl
dChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2lu
ZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERh
dGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1f
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwg
bV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAg
ICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMo
ZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMt
PnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJ
bmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5n
KQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxp
bmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rp
b25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFi
bGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAg
ICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29w
eShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcChKCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAg
ICAgIGNyZWF0ZVByb3BlcnR5TWFwKG1fb2Zmc2V0ICsgMSk7CisgICAgICAgIGNyZWF0ZVByb3Bl
cnR5TWFwKG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KSk7CiAKICAgICBmb3Ig
KHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkgewogICAg
ICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMjU2LDIxICsyNTYsMjEgQEAgdm9p
ZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIH0KIAotaW5saW5l
IHNpemVfdCBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1cnJlbnRDYXBhY2l0
eSkKK2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3Vy
cmVudENhcGFjaXR5KQogewogICAgIGlmICghY3VycmVudENhcGFjaXR5KQogICAgICAgICByZXR1
cm4gNDsKICAgICByZXR1cm4gY3VycmVudENhcGFjaXR5ICogMjsKIH0KIAotdm9pZCBTdHJ1Y3R1
cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCit2b2lkIFN0cnVjdHVyZTo6Z3Jvd091
dE9mTGluZUNhcGFjaXR5KCkKIHsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ID0gbmV4
dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAg
IG1fb3V0T2ZMaW5lQ2FwYWNpdHkgPSBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0
T2ZMaW5lQ2FwYWNpdHkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdQcm9w
ZXJ0eVN0b3JhZ2VTaXplKCkKK3NpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eSgpCiB7Ci0gICAgcmV0dXJuIG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gbmV4dE91dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eShtX291dE9mTGluZUNhcGFjaXR5KTsKIH0KICAKIHZvaWQgU3RydWN0
dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3BlY2lmaWNWYWx1
ZS5jbGVhcigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKQEAgLTI5
Niw3ICsyOTYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRp
b24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlmIChzcGVjaWZp
Y1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBzcGVjaWZpY1Zh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5z
aXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhp
c3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICBv
ZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0OwogICAgICAgICByZXR1cm4gZXhp
c3RpbmdUcmFuc2l0aW9uOwogICAgIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkK
K1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUgYSBzcGVjaWZpYyBmdW5jdGlv
biwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhlcmUgaXMKICAgICAvLyBhbHJl
YWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3BlcnR5IG5hbWUgYW5kIGF0dHJp
YnV0ZXMsIGJ1dApAQCAtMzI3LDggKzMyNyw4IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXQKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICBB
U1NFUlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24pOwogICAgICAgICBvZmZzZXQgPSB0cmFuc2l0
aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAg
ICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAg
IGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXplKCkgPiB0cmFuc2l0aW9uLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKQorICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5
KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KICAgICAKQEAgLTM1MywxNSAr
MzUzLDE1IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICB9
CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHRyYW5z
aXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCi0gICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpOworICAgIGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXplKCkgPiB0cmFuc2l0aW9u
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKIAogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgIHN0
cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwog
ICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtNTQ4LDE4ICs1NDgsMTkgQEAgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogCiAgICAgICAgIHNpemVfdCBwcm9w
ZXJ0eUNvdW50ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CiAgICAgICAgIFZlY3RvcjxKU1Zh
bHVlPiB2YWx1ZXMocHJvcGVydHlDb3VudCk7Ci0KKyAgICAgICAgCiAgICAgICAgIHVuc2lnbmVk
IGkgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdE9mZnNldCA9IGZpcnN0UHJvcGVy
dHlPZmZzZXRGb3IobV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICBQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwogICAgICAgICBmb3IgKFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIsICsraSkgewogICAgICAgICAgICAgdmFsdWVzW2ldID0gb2JqZWN0LT5n
ZXREaXJlY3RPZmZzZXQoaXRlci0+b2Zmc2V0KTsKICAgICAgICAgICAgIC8vIFVwZGF0ZSBwcm9w
ZXJ0eSB0YWJsZSB0byBoYXZlIHRoZSBuZXcgcHJvcGVydHkgb2Zmc2V0cwotICAgICAgICAgICAg
aXRlci0+b2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGkgKyBmaXJzdE9m
ZnNldDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ29weSB0aGUgb3JpZ2luYWwg
cHJvcGVydHkgdmFsdWVzIGludG8gdGhlaXIgZmluYWwgbG9jYXRpb25zCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50OyBpKyspCi0gICAgICAgICAgICBvYmpl
Y3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBpLCB2YWx1ZXNbaV0pOworICAgICAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgZmlyc3RPZmZzZXQgKyBpLCB2
YWx1ZXNbaV0pOwogCiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+Y2xlYXJEZWxldGVkT2Zmc2V0
cygpOwogICAgIH0KQEAgLTU2OCw3ICs1NjksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Zmxh
dHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7CiAg
ICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01NzksMTMgKzU4MCwxMyBAQCBz
aXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuCiAgICAgCiAgICAgcGluKCk7
CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChwcm9wZXJ0eVN0
b3JhZ2VTaXplKCkgPiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBncm93UHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwdXRT
cGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSk7CisgICAgaWYgKG91dE9mTGluZVNpemUoKSA+IG91dE9mTGluZUNhcGFjaXR5KCkp
CisgICAgICAgIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBB
U1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0
aW9uQ2FjaGUpOwpAQCAtNTkzLDggKzU5NCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5V2l0aG91dFQKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnlGb3JQ
aW5uaW5nKGdsb2JhbERhdGEpOwogCiAgICAgcGluKCk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHJl
bW92ZShwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBvZmZzZXQ7CisgICAgcmV0dXJuIHJlbW92
ZShwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6cGluKCkKQEAgLTYzOSwyMCAr
NjM5LDIwIEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AKIAogUGFz
c093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlu
bmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogb3duZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG1fb2Zm
c2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG1f
cHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9w
cm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG51bWJlck9mU2xvdHNGb3JMYXN0T0Zm
c2V0KG1fb2Zmc2V0KSkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBp
bnZhbGlkT2Zmc2V0OwogCiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5
VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQot
ICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZz
ZXQ7CiAKICAgICBhdHRyaWJ1dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7CiAgICAgc3BlY2lmaWNW
YWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmdldCgpOwpAQCAtNjg1LDkgKzY4NSw5IEBAIHZv
aWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3Bl
Y2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKQogewotICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
KSA9PSBub3RGb3VuZCk7CisgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KGdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpKSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBEb250RW51bSkKQEAgLTY5OCwxMiArNjk4LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAg
ICAgICBjcmVhdGVQcm9wZXJ0eU1hcCgpOwogCi0gICAgdW5zaWduZWQgbmV3T2Zmc2V0OwotCi0g
ICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQotICAgICAgICBuZXdP
ZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPmdldERlbGV0ZWRPZmZzZXQoKTsKLSAgICBlbHNlCi0g
ICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOworICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+bmV4dE9mZnNldChtX3R5cGVJbmZv
LnR5cGUoKSk7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGds
b2JhbERhdGEsIHRoaXMsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KSk7CiAKQEAgLTcxMSw3ICs3MDYsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6
cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKIApAQCAtNzI0LDcgKzcxOSw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQ
cm9wZXJ0eU5hbWUgcHIKICAgICBpZiAoIXBvc2l0aW9uLmZpcnN0KQogICAgICAgICByZXR1cm4g
bm90Rm91bmQ7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OwogCiAg
ICAgbV9wcm9wZXJ0eVRhYmxlLT5yZW1vdmUocG9zaXRpb24pOwogICAgIG1fcHJvcGVydHlUYWJs
ZS0+YWRkRGVsZXRlZE9mZnNldChvZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVt
cFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0
dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBzaXpl
X3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVy
dHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0xMDMsMzIgKzEwMywz
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEm
KTsKICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50
RXh0ZW5zaW9uczsgfQogICAgICAgICBib29sIGRpZFRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2RpZFRyYW5zaXRpb247IH0KLSAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd1Byb3BlcnR5U3Rv
cmFnZSgpCisgICAgICAgIGJvb2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gcHJv
cGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0
eSgpID49IG91dE9mTGluZVNpemUoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgh
bV9wcm9wZXJ0eVRhYmxlKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGlu
ZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG91
dE9mTGluZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOworICAgICAgICAgICAgICAgIHJldHVy
biBjdXJyZW50U2l6ZSA9PSBvdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+
PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBB
U1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5
U3RvcmFnZVNpemUoKSk7CiAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxl
dGVkT2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3Bl
cnR5VGFibGUtPnNpemUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5z
aXplKCkgPT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIEFTU0VSVCh0
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSB0b3RhbFN0b3JhZ2VDYXBh
Y2l0eSgpOwogICAgICAgICB9Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdn
ZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3Qgc3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAogCiAgICAg
ICAgIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
SlNPYmplY3QqKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAg
ICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFByb3BlcnR5T2Zmc2V0IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJv
dG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBl
KTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVy
biBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTQ5LDE4ICsx
NDksODYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5
cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIFN0cnVjdHVyZSogcHJldmlv
dXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZv
KTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91
c0lEKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdl
dCgpOworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJv
bShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAgICAgdm9pZCBncm93UHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9Ci0gICAgICAgIHVuc2lnbmVk
IHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZz
ZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6ZV90IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0
OwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7Ci0KLSAgICAgICAg
c2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBzaXplX3Qg
Z2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICB2b2lkIGdy
b3dPdXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0
eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBh
Y2l0eTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25G
aW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJ
bmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVy
dHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVy
dHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICh0b3Rh
bFNpemUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxp
bmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2ln
bmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9IEZpbmFsT2JqZWN0VHlw
ZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSAtIGlubGluZVN0b3Jh
Z2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9y
TGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZM
aW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3Rh
bFNpemUgPCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3Jh
Z2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBl
KCkgPT0gRmluYWxPYmplY3RUeXBlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5Owor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5l
U2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQg
KyAxOworICAgICAgICAgICAgaWYgKHJlc3VsdCA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUtu
b3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3Jh
Z2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRP
ZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFz
UmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90
bzsgfQpAQCAtMTc3LDcgKzI0NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVt
ZXJhYmxlUHJvcGVydGllczsgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkg
OiBtX29mZnNldCA9PSBub09mZnNldDsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVy
biAhaXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJh
Y2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5j
dGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGlj
dGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtp
bmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsK
LSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0
eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKTsKQEAgLTMwMSw3ICszNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRy
YW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRo
ZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3
ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0g
ICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAx
OworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0
KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAtMzEwLDggKzM4Myw2IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0
aW9uTGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBub09mZnNldCA9IC0x
OwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhy
YXNoQ291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CkBAIC0zMzYsMTAg
KzQwNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIG11dGFibGUgSW5s
aW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogCi0gICAgICAgIHVp
bnQzMl90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIHVpbnQzMl90IG1fb3V0
T2ZMaW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBm
b3IgYW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6
IDI7CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwpAQCAtMzUzLDI2
ICs0MjQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVu
Y3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAg
ICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJl
dHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0g
bV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJu
IGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCi0gICAgaW5s
aW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAg
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAg
ICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Cisg
ICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVu
dHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkp
LmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7
CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0Owog
ICAgIH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVm
aW5lZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150340</attachid>
            <date>2012-07-01 16:09:38 -0700</date>
            <delta_ts>2012-07-01 16:53:05 -0700</delta_ts>
            <desc>the JIT has been attacked</desc>
            <filename>overflowstorage_patch_5.diff</filename>
            <type>text/plain</type>
            <size>124273</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NiBA
QAorMjAxMi0wNy0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFk
T3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlND
OjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OlB1dEJ5SWRTdGF0dXMpOgor
ICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUHV0QnlJZFN0
YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29s
dmVHbG9iYWxTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6UmVz
b2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6Om9m
ZnNldCk6CisgICAgICAgIChSZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKFN0cnVjdHVyZVNldCk6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2Vzcyk6
CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAg
ICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6
CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU09iamVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRGb3JMb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFVuZGVmaW5l
ZEF0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFkZHJlc3NPZk91dE9m
TGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpKU09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlND
OjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVB
bmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oOgorICAgICAgICAoUHJvcGVydHlNYXBFbnRy
eSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TWFwRW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgor
ICAgICAgICAoUHJvcGVydHlUYWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlBy
b3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5T2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6Y2hlY2tPZmZzZXQpOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OmlzVmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmlzT3V0T2ZMaW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0
SW5JbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAgIChKU0M6
Om5leHRQcm9wZXJ0eU9mZnNldEZvcik6CisgICAgICAgIChKU0M6OmZpcnN0UHJvcGVydHlPZmZz
ZXRGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90
OjpzZXRWYWx1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0Q2FjaGVhYmxlR2V0
dGVyU2xvdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y2xlYXJPZmZzZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3Bl
cnR5U2xvdDo6c2V0RXhpc3RpbmdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5
U2xvdDo6c2V0TmV3UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmNh
Y2hlZE9mZnNldCk6CisgICAgICAgIChQdXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXApOgorICAgICAg
ICAoSlNDOjpuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpwdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnByZXZpb3VzSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZUNhcGFj
aXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZUZvcktub3du
Tm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6aW5saW5lU2l6ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG90YWxTdG9yYWdlQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
Z2V0KToKKwogMjAxMi0wNi0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTT2JqZWN0IHdhc3RlcyB0b28gbXVjaCBtZW1vcnkgb24gdW51c2VkIHByb3BlcnR5
IHNsb3RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENv
ZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CiAgICAgICAgIG9wID0gImdldF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xp
bmUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAg
ICBvcCA9ICJnZXRfYnlfaWRfc2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtNDkxLDcgKzQ5NCw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4KICAgICAgICAgZGF0
YUxvZygiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9p
ZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbiku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkpIHsKKyAgICAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9i
eV9pZCkgfHwgdlBDWzBdLnUuKSB7CiAgICAgICAgIHByaW50U3RydWN0dXJlKCJwdXRfYnlfaWQi
LCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAzMyw2ICsxMDM2LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxm
OgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRf
YnlfaWRfY2hhaW46CkBAIC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAo
RXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF9yZXBsYWNlOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEw
ICsxMDc5LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cklu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV1dOwogICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoK
KyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2Zf
bGluZToKICAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJl
IHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VV
bmxpbmtpbmcpCkBAIC0yMDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
ICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3Ry
dWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJ
bnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7
CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAg
ICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25v
cmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2lt
cGxlLCBmYWxzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1
ZSk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWlu
KEdldEIKICAgICAgICAgCiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+
Z2V0KAogICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmli
dXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0g
bm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1
Y3R1cmUpOwpAQCAtMTU2LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAogICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgK
ICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1
dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3Vs
dC5tX29mZnNldCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3Ry
dWN0dXJlKTsKICAgICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNw
ZWNpZmljVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1f
b2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9v
ZmZzZXQpKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAgR2V0QnlJZFN0YXR1
cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgc2l6ZV90IG15T2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2Jh
bERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQobXlPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgcmVz
dWx0Lm1fb2Zmc2V0ID0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC0xOTYsNyArMTk2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1
cmUpOwogICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQu
bV9vZmZzZXQpKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXpl
KCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKTsKKyAg
ICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCkg
eworICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgIHJl
c3VsdC5tX3N0YXRlID0gVGFrZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJl
U2V0LmNsZWFyKCk7CiAgICAgICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgR2V0QnlJZFN0YXR1
c19oCiAjZGVmaW5lIEdldEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4K
IApAQCAtNDYsMTMgKzQ3LDEzIEBAIHB1YmxpYzoKIAogICAgIEdldEJ5SWRTdGF0dXMoKQogICAg
ICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKLSAgICAgICAgLCBtX29mZnNldChub3RGb3Vu
ZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAg
CiAgICAgR2V0QnlJZFN0YXR1cygKICAgICAgICAgU3RhdGUgc3RhdGUsIGJvb2wgd2FzU2Vlbklu
SklULCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNldCgpLAot
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9
IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+
KCkpCisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNp
ZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxT
dHJ1Y3R1cmUqPigpKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fY2hhaW4oY2hhaW4pCkBAIC03Niw3
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cnVj
dHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0
eSB2ZWN0b3IgaWYgdGhpcyBpcyBhIGRpcmVjdCBhY2Nlc3MuCiAgICAgSlNWYWx1ZSBzcGVjaWZp
Y1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNW
YWx1ZSgpIGlmIHRoZXJlIGlzIG5vIHNwZWNpZmljIHZhbHVlLgotICAgIHNpemVfdCBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQo
KSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQogICAgIApAQCAtODgsNyArODksNyBA
QCBwcml2YXRlOgogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBWZWN0b3I8
U3RydWN0dXJlKj4gbV9jaGFpbjsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKLSAgICBz
aXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgYm9vbCBt
X3dhc1NlZW5JbkpJVDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZh
bHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF90aGlzLCA1
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lk
LCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5
X2lkX291dF9vZl9saW5lLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAg
bWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAog
ICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfcHJvdG8sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfY2hhaW4sIDkpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXApAQCAtMTIyLDkgKzEyMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X3N0cmluZ19sZW5ndGgsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkg
XAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5
KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9k
ZWxfYnlfaWQsIDQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
MTAgKzQ1LDExIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAg
ICBpZiAoIXN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9
IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAg
ICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBpZiAoaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkCisgICAgICAgIHx8IGluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkgewor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRC
bG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChv
ZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CiAgICAgfQpA
QCAtNTYsMTYgKzU3LDE4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZy
b20KICAgICBBU1NFUlQoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5J
bnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ci0gICAgICAgICAgIHx8IGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCk7CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29m
X2xpbmUKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKICAgICAKICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwog
ICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hh
aW4uZ2V0KCk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNoYWluKTsK
ICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0g
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIAogICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNp
bXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsK
ICNlbHNlCkBAIC05NCwyNCArOTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9i
eV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5
SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJl
LT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7
Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAg
ICAgICAgICAgICAgU2ltcGxlUmVwbGFjZSwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1
dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAg
MCwgMCwKICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9m
ZnNldCk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OiB7CiAgICAgICAgIEFTU0VSVChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3Vz
U3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsK
LSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3Ry
dWN0dXJlLT5nZXQoCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUu
cHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRC
bG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91
bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwK
ICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3Ry
dWN0dXJlLmdldCgpLApAQCAtMTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRy
YW5zaXRpb24uY2hhaW4uZ2V0KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAs
IDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91
bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAw
LCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0
KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5lIFB1
dEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3
dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJl
KDApCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0KG5v
dEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0K
ICAgICAKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVj
dHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAg
ICAgICwgbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlKQogICAgICAgICAsIG1fbmV3U3RydWN0
dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgp
ID09ICFtX29sZFN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVU
cmFuc2l0aW9uKSA9PSAhbV9uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUg
IT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBBU1NF
UlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgp
ID09IChtX29mZnNldCA9PSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0g
Tm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmll
ciYpOwpAQCAtOTAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1
cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNoYWlu
OyB9Ci0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAK
IHByaXZhdGU6CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3ICsx
MDAsNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3Ry
dWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1cmVD
aGFpbjsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3Rh
dHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQCBzdGF0aWMgUmVzb2x2ZUds
b2JhbFN0YXR1cyBjb21wdXRlRm9yU3RyCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9y
ZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgK
ICAgICAgICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGVz
SWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAg
ICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJlc29sdmVHbG9i
YWxTdGF0dXMoKTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhSZXNvbHZl
R2xvYmFsU3RhdHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVH
bG9iYWxTdGF0dXMuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3Vu
ZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0K
ICAgICAKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBzdGF0ZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAg
IFN0YXRlIHN0YXRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IGludmFsaWRPZmZzZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpT
VmFsdWUoKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKQEAgLTcwLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Ns
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9CiAgICAg
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsg
fQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgSlNW
YWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAK
IHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJl
OwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAg
ICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0
dXMKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIHB1Ymxp
YzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5z
aXplKCk7IH0KICAgICAKLSAgICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1
cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJlc1tpXS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8vIENhbGwgdGhp
cyBpZiB5b3Uga25vdyB0aGF0IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lzdCBvZiBleGFj
dGx5CiAgICAgLy8gb25lIHN0cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvblN0cnVj
dHVyZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihi
b29sIHVzZXNSZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFu
ZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAg
ICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBk
ZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAt
MTYzMCwxNyArMTYzMCwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBk
ZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBi
YXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFn
ZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9k
ZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlm
ICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgc2l6ZV90IGFjdHVhbE9mZnNldDsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNl
OwogICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSkpOwotICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKKyAgICAgICAgYWN0dWFsT2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0
KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0
KTsKICAgICB9IGVsc2UgewogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdl
dFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7CisgICAg
ICAgIGFjdHVhbE9mZnNldCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpCiAgICAg
fQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCkBAIC0x
NjQ4LDcgKzE2NDgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeU9mZnNldCgK
ICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSkpOwogICAgICAgICAKICAgICBTdG9yYWdlQWNj
ZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQg
PSBvZmZzZXQgKyBvZmZzZXRPZmZzZXQ7CisgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0g
YWN0dWFsT2Zmc2V0OwogICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOwogICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQo
c3RvcmFnZUFjY2Vzc0RhdGEpOwogfQpAQCAtMTY3Nyw3ICsxNjc3LDYgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICAKICAgICBhZGRUb0dyYXBo
KENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2V0QnlJZFN0
YXR1cy5zdHJ1Y3R1cmVTZXQoKSkpLCBiYXNlKTsKICAgICAKLSAgICBib29sIHVzZUlubGluZVN0
b3JhZ2U7CiAgICAgaWYgKCFnZXRCeUlkU3RhdHVzLmNoYWluKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuc3RydWN0dXJl
U2V0KCkuc2luZ2xldG9uU3RydWN0dXJlKCk7CiAgICAgICAgIEpTT2JqZWN0KiBjdXJyZW50T2Jq
ZWN0ID0gMDsKQEAgLTE2ODYsOSArMTY4NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQoCiAgICAgICAgICAgICBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5j
aGFpbigpW2ldOwogICAgICAgICAgICAgYmFzZSA9IGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
ayhjdXJyZW50T2JqZWN0LCBjdXJyZW50U3RydWN0dXJlKTsKICAgICAgICAgfQotICAgICAgICB1
c2VJbmxpbmVTdG9yYWdlID0gY3VycmVudFN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGdldEJ5SWRTdGF0dXMu
c3RydWN0dXJlU2V0KCkuYWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICB9
CiAgICAgCiAgICAgLy8gVW5sZXNzIHdlIHdhbnQgYnVncyBsaWtlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc4Mywgd2UgbmVlZCB0bwogICAgIC8vIGVuc3VyZSB0
aGF0IHRoZSBiYXNlIG9mIHRoZSBvcmlnaW5hbCBnZXRfYnlfaWQgaXMga2VwdCBhbGl2ZSB1bnRp
bCB3ZSdyZSBkb25lIHdpdGgKQEAgLTE3MDcsOCArMTcwNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgfQogICAgIAogICAgIGhhbmRsZUdldEJ5T2Zmc2V0KAot
ICAgICAgICBkZXN0aW5hdGlvbk9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJO
dW1iZXIsIHVzZUlubGluZVN0b3JhZ2UsCi0gICAgICAgIGdldEJ5SWRTdGF0dXMub2Zmc2V0KCkp
OworICAgICAgICBkZXN0aW5hdGlvbk9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZp
ZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKQEAgLTIyNTksMjAgKzIyNTUsMjAgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkp
IHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9n
cmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNl
KTsKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAg
IHNpemVfdCBhY3R1YWxPZmZzZXQ7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5
U3RvcmFnZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUo
KS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldChwdXRCeUlkLm9mZnNldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UgPSBiYXNlOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNP
YmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICAgICAgICAgICAgICBv
ZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgYWN0dWFsT2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2UocHV0QnlJZC5vZmZz
ZXQoKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAg
ICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOworICAgICAgICAgICAgICAgICAgICBh
Y3R1YWxPZmZzZXQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UocHV0QnlJZC5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZz
ZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlT
dG9yYWdlLCBiYXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
U3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3Rv
cmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9m
ZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBhY3R1YWxP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VB
Y2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFoYXNFeGl0U2l0ZQpAQCAtMjMwOCwxNSArMjMwNCwxNSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkpKSksCiAgICAgICAgICAgICAgICAgICAgIGJh
c2UpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgc2l6ZV90IGFjdHVhbE9mZnNldDsKICAgICAgICAgICAgICAg
ICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlk
U3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkg
LyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhY3R1YWxPZmZz
ZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldElu
SW5saW5lU3RvcmFnZShwdXRCeUlkLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFBy
b3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbE9mZnNldCA9IG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShwdXRCeUlkLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICAgICAgUHV0QnlPZmZzZXQsCkBAIC0y
MzI2LDcgKzIzMjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAgICAg
ICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgpICsg
b2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9
IGFjdHVhbE9mZnNldDsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlm
aWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
c3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNzM4LDggKzI3MzQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0aW9uLCBnbG9iYWxPYmplY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMuc3RydWN0dXJlKCkt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMu
b2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwgc3Rh
dHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlTnVtYmVyKys7IC8vIFNraXAgb3ZlciB0aGUgdW51
c2VkIGdsb2JhbCByZXNvbHZlIGluZm8uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVw
YXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBG
dW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3Qp
CiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUy
LDYgKzUyLDcgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZAogCiAg
ICAgLy8gUGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNo
ZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyNlcnJvciAiRklYTUU6IG5lZWQgdG8gdHJhbnNm
b3JtIGxvYWQgdG8gbm9wIGFuZCB2aWNlIHZlcnNhIgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
aWYgKGNvbXBhY3QpCiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0KTsKQEAg
LTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZl
CiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRj
aCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKSwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZn
LmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0No
YWluQWNjZXNzU3R1YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIHNpemVfdCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVM
b2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJv
dXRpbmUpCitzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBz
bG93Q2FzZUxhYmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIHN0dWJSb3V0aW5lKQogewogICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKQEAgLTEz
OSwxMyArMTQwLDIzIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIK
ICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgc3R1
YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVz
dWx0R1BSKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkgewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHRHUFIp
OworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVz
cyhwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSksIHJlc3VsdEdQUik7CiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
LCByZXN1bHRUYWdHUFIpOwotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHByb3RvT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpKSwgcmVzdWx0R1BS
KTsKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
LCByZXN1bHRUYWdHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZPdXRPZkxpbmV0b3Jh
Z2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0
R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Cisg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTU2Nyw3ICs1NzgsNyBAQCBzdGF0aWMg
dm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1Ykpp
dDsKICAgICAKLSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJh
cnJpZXJOZWVkZWQgfHwgIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkpIHsKKyAg
ICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQg
fHwgaXNPdXRPZkxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CiAgICAgICAgIHNj
cmF0Y2hHUFIgPSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1
ZUdQUik7CiAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAgICAgc3R1
YkppdC5wdXNoKHNjcmF0Y2hHUFIpOwpAQCAtNTg2LDIwICs1OTcsMjAgQEAgc3RhdGljIHZvaWQg
ZW1pdFB1dFJlcGxhY2VTdHViKAogI2VuZGlmCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0
LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZz
ZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2Ny
YXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAg
ICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVU
YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsK
KyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAg
ICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAg
IHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAg
CkBAIC02ODUsMjAgKzY5NiwyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIo
CiAKICAgICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlz
VXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJK
aXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAg
ICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
c3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJK
aXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVj
dHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFs
dWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
VGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIo
dmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnN0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAg
ICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NDMsNyArMzU0Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3Vs
dEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTY3LDcgKzM1NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQ
UiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcg
KzMzMyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICAgICB9
CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KGNlbGwpKSB7Ci0gICAgICAgIEpTT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOworICAgICAg
ICBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCks
IHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw2ICsyNTUsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYWN0
aXZhdGlvbikKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZXFfbnVsbCkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYXJndW1l
bnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCkBAIC0zMTksOCAr
MzIwLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9u
ZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZToKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmU6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
cHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk1Miw3ICs5
NTgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkp
OwogICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3Bl
cmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgICAg
ICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlw
ZUNoYWluKGV4ZWMpOwpAQCAtOTYwLDE2ICs5NjksMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVy
ZUNoYWluLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHBjWzhdLnUub3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGlu
ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291
dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkg
eworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3Bl
cmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVv
ZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7CisgICAg
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEwODcsMzEgKzEwODcs
NTggQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAK
IAotX2xsaW50X29wX2dldF9ieV9pZDoKKyMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlf
aWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyMgb3Bjb2RlLiBX
ZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBm
YWlscywgc2luY2UKKyMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5
IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyMgdG8gdGFrZSBmYXN0IHBhdGggb24g
dGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQK
KyMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKworbWFjcm8gZ2V0QnlJZChnZXRQ
cm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgV2Ugb25seSBkbyBt
b25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlm
eSB0aGUKLSAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUg
dG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCi0gICAgIyBwaW5nLXBvbmdpbmcgaXMg
ZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51
ZQotICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2Ug
dGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKLSAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBk
b2luZyBhbnl3YXkuCiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZGkgMTZbUENdLCB0MQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0
QnlJZFNsb3cpCiAgICAgbG9hZGkgMjBbUENdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10s
IHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDJdLCB0MwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKLSAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIGxvYWRpIDMyW1BDXSwgdDEKLSAgICB2YWx1ZVByb2Zp
bGUodDMsIHQyLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
KyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgICAgICAg
ICBsb2FkaSBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAg
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQyCisgICAgICAg
ICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIGxvYWRpIDMy
W1BDXSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MiwgdDEpCisgICAg
ICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICAKKyAgICAgICAgLm9wR2V0QnlJZFNsb3c6Cisg
ICAgICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAg
ICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKIAotLm9wR2V0QnlJZFNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3Bh
dGNoKDkpCittYWNybyB3aXRoSW5saW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwg
Y29udGludWF0aW9uKQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9w
ZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0
ZXIgaXMgdW51c2VkLgorICAgIGNvbnRpbnVhdGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkK
K2VuZAorCittYWNybyB3aXRoT3V0T2ZMaW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFn
ZSwgY29udGludWF0aW9uKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtv
YmplY3RdLCBwcm9wZXJ0eVN0b3JhZ2UKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIHByb3BlcnR5
U3RvcmFnZSByZWdpc3RlciBub3cgcG9pbnRzIHRvIHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFn
ZSwgYW5kIHRoYXQgdGhlIG9iamVjdCByZWdpc3RlciBtYXkgYmUgcmV1c2VkCisgICAgIyBpZiB0
aGUgb2JqZWN0IHBvaW50ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorICAgIGNvbnRpbnVhdGlv
bihwcm9wZXJ0eVN0b3JhZ2UsIG9iamVjdCkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgor
ICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX2dldF9ieV9pZF9v
dXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTExMzAsNjggKzExNTcsOTYgQEAgX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29w
X3B1dF9ieV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRC
eUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKLSAg
ICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAg
ICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBz
Y3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAu
b3BQdXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQorICAgICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAg
d3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRh
Z09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQor
ICAgICAgICBlbmQpCitlbmQKIAogLm9wUHV0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIGRpc3BhdGNoKDkpCiAKK19sbGludF9vcF9w
dXRfYnlfaWQ6CisgICAgcHV0QnlJZCh3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2Up
CiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisKK21hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdldFByb3BlcnR5U3RvcmFnZSkKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENd
LCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwg
Lm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgogICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tz
KHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAg
ICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MiwgdDEsIHQyKQotICAgIHdyaXRlQmFycmllcih0MSwgdDIpCi0gICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbdDNdCi0gICAgbG9hZGkgMjRbUENdLCB0MQotICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFt0M10KLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAg
ZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAg
ICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAg
ICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEs
IHQyKQorICAgICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgICAgICAgICBs
b2FkaSAyNFtQQ10sIHQxCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAg
ICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gbm9BZGRpdGlvbmFs
Q2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAorCittYWNybyBzdHJ1Y3R1cmVDaGFp
bkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgY29uc3QgcHJvdG9DZWxsID0gb2xk
U3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBw
cm90bworCisgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykg
YnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rv
cltzY3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xk
U3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKy5sb29wOgorICAgIGxvYWRpIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAg
YnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkcCA0
LCBzY3JhdGNoCisgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtv
bGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAo
b2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24o
bm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0
aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50
X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigK
LSAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAg
IGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0
dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KLSAgICAgICAgCi0gICAgICAgICAgICBsb2FkcCAy
OFtQQ10sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0
Y2gsIG9rIGVuZCkKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvcltz
Y3JhdGNoXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2Ny
YXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
VGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCi0gICAgICAgIC5sb29wOgot
ICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRb
b2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xkU3Ry
dWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAotICAg
ICAgICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1
Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAotICAgICAgICAuZG9uZToKLSAgICAgICAgZW5kKQorICAg
IHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFn
ZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoT3V0T2ZM
aW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2luZyBjb3B5KQpAQCAtNTU1LDcg
KzU1NSwxMSBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgIGVuZAogICAgIAogICAgIGRlZiBoYW5k
bGVYODZBZGQoa2luZCkKLSAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5u
ZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRk
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKICAg
ICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAg
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAg
ICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMApAQCAtNTY4LDcgKzU3MiwxMSBAQCBjbGFz
cyBJbnN0cnVjdGlvbgogICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
Ml0uaXNfYT8gUmVnaXN0ZXJJRAotICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZp
eChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgoa2luZCl9ICgje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCiAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChr
aW5kKX0gI3t4ODZPcGVyYW5kcyhraW5kLCBraW5kKX0iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDI0ICs5Myw1NCBAQCB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiAg
ICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKKyAgICAKKyAgICBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CisKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ug
c3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFn
ZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmluYWxPYmplY3QoKTsKKyAgICAgICAgLy8gV2Ug
aGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBi
bG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCisgICAg
ICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQo
JnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6
ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VT
aXplKTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVt
cCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwg
U3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgfQorCisgICAgaWYgKHRoaXNPYmplY3Qt
Pm1faW5oZXJpdG9ySUQpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2lu
aGVyaXRvcklEKTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2aXNpdG9yLm1faXNDaGVj
a2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbjsKKyNlbmRpZgorfQogCi0gICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwordm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICAKKyAgICBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4odGhpcywgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ug
c3RvcmFnZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBzdG9y
YWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7
Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsKKyAg
ICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2Uo
KTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsK
ICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0
aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQg
cG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNpdG9y
LmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9y
YWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5k
KCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNp
emVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdl
U2l6ZSk7CiAgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRl
bXApOwotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFnZSwg
U3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZM
aW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAgICAg
fQogCiAgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9yYWdl
U2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5hbE9i
amVjdCgpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGlubGluZVN0b3JhZ2UoKSwgc3RvcmFn
ZVNpemUpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0
aW9uOwogI2VuZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7IDsg
b2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQg
PSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5k
KSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwor
ICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChh
dHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC01
MTksMTcgKzU0OSwxNyBAQCBib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRh
CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBX
VEY6Om5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3Qgb2Zmc2V0
OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJl
bW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0
ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG9mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OSwyNSAr
NTg5LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEoKICAgICBy
ZXR1cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0
Ojpncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9s
ZFNpemUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93T3V0
T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBz
aXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAg
Ly8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVy
ZSgpLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0
aW9uLgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2Ug
PSBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3Bl
cnR5U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAg
IGlmICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRy
YSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ug
d2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1w
ID0gbmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC50cnlB
bGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pICogbmV3U2l6
ZSwgJnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgbmV3UHJvcGVydHlTdG9y
YWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLQotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3UHJvcGVy
dHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ldOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0
IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50
ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVydHlTdG9yYWdlOwpAQCAtNTk0LDgg
KzYyMSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKIHsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNp
emVfdCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwotICAgIGlmIChvZmZzZXQgPT0gV1RG
Ojpub3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVy
ZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNl
bGwpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihvYmplY3QtPmdldERpcmVjdE9mZnNl
dChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTQgKzc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFjY2Vzc29yICAgICA9IDEg
PDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIH07CiAKLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotI2RlZmluZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0
eSA2Ci0jZWxzZQotI2RlZmluZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA0
Ci0jZW5kaWYKLQotQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNh
cGFjaXR5ID49IDApLCBmaW5hbF9zdG9yYWdlX25vbl9uZWdhdGl2ZSk7Ci0KICAgICBjbGFzcyBK
U09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRy
YW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0xNjksMjYg
KzE2MSw2NCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAg
ICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4K
ICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gZ2V0RGlyZWN0T2Zm
c2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
ICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBnZXREaXJlY3RP
ZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAg
c2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9u
Rm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAg
ICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgICAgICB7
CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb247Ci0gICAgICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAh
PSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CisgICAgICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpIDogMDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCk7IH0KKyAgICAgICAg
Q29uc3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxDb25zdFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOworICAgICAgICB9
CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdl
dCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAg
ICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRp
b24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIC0gcHJvcGVy
dHlTdG9yYWdlKCk7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBs
b2NhdGlvbikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVz
dWx0OworICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZSA9IGxvY2F0aW9u
IC0gaW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldEluSW5saW5lU3RvcmFn
ZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRpb24gLSBvdXRPZkxpbmVTdG9yYWdlKCk7
CisgICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChyZXN1bHQsIHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CkBAIC0y
MDUsOSArMjM1LDkgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rvcgog
ICAgICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNz
IHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zm
c2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNl
dF0uZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFn
ZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQotICAgICAgICB2b2lk
IHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9y
YWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQorICAgICAgICBKU1ZhbHVlIGdldERpcmVj
dE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGxvY2FsRm9yT2Zm
c2V0KG9mZnNldCktPmdldCgpOyB9CisgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVl
KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1
ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7
IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKQEAgLTIyOCwyNCArMjU4LDE2IEBAIENPTVBJTEVf
QVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBzdGF0aWNGdW5j
dGlvbnNSZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKTsgfQogICAgICAgICB2b2lkIHJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNT
dGF0ZSogZXhlYyk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlTdG9yYWdl
IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0KLSAgICAgICAgICAgICAgICAhbV9w
cm9wZXJ0eVN0b3JhZ2UuZ2V0KCkKLSAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPih0aGlzICsgMSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IHN0cnVjdHVyZSgp
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwg
UHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UHJvcGVydHlTdG9yYWdlIGdyb3dPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVf
dCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIHZvaWQgc2V0T3V0T2ZMaW5lU3Rv
cmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2UsIFN0cnVjdHVyZSopOwogICAgICAg
ICAKICAgICAgICAgYm9vbCByZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0
YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIHVu
c2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1
cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSopOwogCi0gICAgICAgIHZvaWQqIGFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpCisgICAgICAg
IHZvaWQqIGFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gJm1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICAgICAgcmV0dXJuICZtX291dE9m
TGluZVN0b3JhZ2U7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTI2MSw3ICsyODMsNyBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7Ci0gICAgICAg
IHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKTsKICAgICAgICAgc3RhdGljIHNpemVf
dCBvZmZzZXRPZkluaGVyaXRvcklEKCk7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTI4Nyw3ICszMDksNyBAQCBDT01QSUxFX0FTU0VS
VCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAKICAgICAgICAgLy8gVG8gaW5zdGFudGlhdGUg
b2JqZWN0cyB5b3UgbGlrZWx5IHdhbnQgSlNGaW5hbE9iamVjdCwgYmVsb3cuCiAgICAgICAgIC8v
IFRvIGNyZWF0ZSBkZXJpdmVkIHR5cGVzIHlvdSBsaWtlbHkgd2FudCBKU05vbkZpbmFsT2JqZWN0
LCBiZWxvdy4KLSAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJv
cGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOworICAgICAgICBKU09iamVjdChKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzZXRJbmhlcml0b3JJ
RCgpCiAgICAgICAgIHsKQEAgLTMwNSwxOSArMzI3LDYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZv
aWQgaXNTdHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHBy
b3BlcnR5U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9
Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3By
b3BlcnR5U3RvcmFnZS5nZXQoKTsgfQotCi0gICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAg
ICAgfQotCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zm
c2V0KHNpemVfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAgfQotCiAgICAgICAgIHRlbXBsYXRlPFB1dE1v
ZGU+CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwq
KTsKIApAQCAtMzI3LDcgKzMzNiw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnko
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJlKiBjcmVh
dGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBTdG9yYWdlQmFycmllciBt
X3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9vdXRPZkxpbmVTdG9y
YWdlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2luaGVyaXRvcklEOwogICAg
IH07CiAKQEAgLTM1MywxNCArMzYyLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3IKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNOb25GaW5h
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIDApCisgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEpOwotICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT50
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7
CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzgxLDYgKzM5MCw4IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpCkBA
IC0zODgsMTEgKzM5OSwxNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIHByb3RlY3RlZDoK
KyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuQ29tbW9uKFNsb3RWaXNpdG9yJik7CisgICAgICAg
IAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9p
bmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7Ci0gICAgICAgICAgICBBU1NFUlQodGhp
cy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVj
dHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAg
ICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkg
PT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8o
KSk7CiAgICAgICAgIH0KIApAQCAtNDAwLDEzICs0MTQsMTMgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICAgICAg
OiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKKyAgICAg
ICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBK
U09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiBtX2lubGluZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHld
OworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtJTkxJ
TkVfU1RPUkFHRV9DQVBBQ0lUWV07CiAgICAgfTsKIAogaW5saW5lIEpTRmluYWxPYmplY3QqIEpT
RmluYWxPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtNDMxLDkgKzQ0NSw5IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3QKICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5l
U3RvcmFnZSk7CiB9CiAKLWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkKK2lubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpCiB7Ci0gICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0
b3JhZ2UpOworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fb3V0T2ZMaW5l
U3RvcmFnZSk7CiB9CiAKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9y
SUQoKQpAQCAtNDcxLDE0ICs0ODUsMTggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFs
VGhpcygpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0g
R2xvYmFsVGhpc1R5cGU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm9wZXJ0eVN0
b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0T3V0T2ZMaW5l
U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZSk7CiAgICAgQVNT
RVJUKHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkKLSAgICAgICAgICAgfHwgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8gJiYgc3RhdGljX2Nhc3Q8dm9pZCo+KHN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0
aGlzICsgMSkpKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0
T2ZMaW5lU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5l
U2l6ZSgpKTsKKyAgICB9CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0b3JhZ2UpOwor
ICAgIG1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CiB9
CiAKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxNiw5ICs1MzQsOSBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlLmFz
Q2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZSkKK2lubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCBpbmxpbmVTdG9y
YWdlKQorICAgICwgbV9vdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIDApCiB7CiB9
CiAKQEAgLTU0MiwxOSArNTYwLDYgQEAgaW5saW5lIFN0cnVjdHVyZSogSlNPYmplY3Q6OmluaGVy
aXRvcklEKAogICAgIHJldHVybiBjcmVhdGVJbmhlcml0b3JJRChnbG9iYWxEYXRhKTsKIH0KIAot
aW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0Ci17
Ci0gICAgaWYgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCi0gICAgICAg
IHJldHVybiBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eTsKLSAgICByZXR1cm4g
MDsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjppc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gaW5saW5lU3Rv
cmFnZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09
IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpOwotfQotCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKIHsKICAgICByZXR1cm4gY2xhc3NJbmZv
KCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKQEAgLTYxMSwxMCArNjE2LDEwIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0Nl
bGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5h
bWUpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
KSkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2goKQorICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCiAgICAg
ICAgICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKKyAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGFz
T2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4ICs2ODEsOCBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlND
ZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRl
cywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCkt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50
U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkg
ewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rp
b24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5l
dyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1
cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKSkKQEAgLTcwMCwxMyArNzA1LDE0IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYm
ICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAgICAgICBp
ZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkpCi0gICAgICAgICAg
ICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUo
KS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1By
b3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdl
ID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxH
cm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRP
ZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwog
ICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24p
OwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3Ry
dWN0dXJlKCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0
b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJl
KCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChv
ZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlKCktPnRvdGFsU3RvcmFn
ZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwg
YmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTcxNCwxNSArNzIwLDE2
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVu
dENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
dGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5j
dGlvbiwgb2Zmc2V0KSkgewotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHBy
b3BlcnR5U3RvcmFnZSgpOyAKLSAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBuZXdTdG9yYWdlID0g
Z3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0KLSAgICAgICAgQVNTRVJUKG9mZnNldCA8
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIHNldFByb3Bl
cnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOworICAgICAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsgCisgICAgICAg
IGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQor
ICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEs
IGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKworICAg
ICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3Ry
dWN0dXJlLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJl
Y3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMg
YSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3Qg
Y3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1
bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc0MSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAg
ICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3Vy
cmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkg
eworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUg
PT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc3NSw4IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJl
KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsK
ICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQg
PCBzdHJ1Y3R1cmUtPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHNldFN0cnVjdHVyZUFu
ZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAog
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTc4MSwy
MiArNzg5LDIyIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAog
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZO
ZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5l
d1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKG9sZENh
cGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgCi0gICAg
aWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkgeworICAgIGlmIChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpIHsKICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0
b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKAotICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBh
Y2l0eSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAg
ICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKAorICAg
ICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2Us
IG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVB
bmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIGdsb2JhbERh
dGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOwogfQog
CiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQpAQCAtODI0LDExICs4MzIsMTEgQEAgaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNz
b3IpKTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgp
OwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAg
ICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRO
ZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAgc2V0UHJvcGVydHlT
dG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKKyAgICBQcm9wZXJ0
eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RydWN0
dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdTdG9yYWdl
ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlU2l6
ZSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9i
YWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGds
b2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsx
MzAsOCBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgZm9y
ICg7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5v
dEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYg
KzIxLDcgQEAKICNpZm5kZWYgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogI2RlZmluZSBQcm9wZXJ0
eU1hcEhhc2hUYWJsZV9oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUg
IlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFRhYmxlLmg+CkBAIC03MiwxMSArNzMsMTEgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRQb3dlck9m
Mih1bnNpZ25lZCB2KQogCiBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSB7CiAgICAgU3RyaW5nSW1w
bCoga2V5OwotICAgIHVuc2lnbmVkIG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7
CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBzcGVj
aWZpY1ZhbHVlOwogCi0gICAgUHJvcGVydHlNYXBFbnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwqIGtleSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCisgICAgUHJvcGVydHlNYXBF
bnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwq
IGtleSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCiAgICAgICAgIDoga2V5KGtleSkKICAgICAgICAgLCBvZmZzZXQob2Zm
c2V0KQogICAgICAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykKQEAgLTE3NSw3ICsxNzYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBoYXNE
ZWxldGVkT2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIHZvaWQgYWRkRGVsZXRl
ZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0
IG5leHRPZmZzZXQoSlNUeXBlIHR5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFi
bGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQu
CiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4g
PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1U
YWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4
ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0
aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFBy
b3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGlu
ZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVk
T2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQ
cm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsK
ICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zm
c2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zm
c2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAor
ICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAg
IEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNp
dHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9m
ZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAi
SlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2YgVVNFKEpTVkFMVUUzMl82NCkKKyNk
ZWZpbmUgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNgorI2Vsc2UKKyNkZWZpbmUgSU5MSU5FX1NU
T1JBR0VfQ0FQQUNJVFkgNAorI2VuZGlmCisKK3R5cGVkZWYgaW50IFByb3BlcnR5T2Zmc2V0Owor
CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOworc3RhdGlj
IGNvbnN0IFByb3BlcnR5T2Zmc2V0IGlubGluZVN0b3JhZ2VDYXBhY2l0eSA9IElOTElORV9TVE9S
QUdFX0NBUEFDSVRZOworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5l
T2Zmc2V0ID0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworCitpbmxpbmUgdm9pZCBjaGVja09mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cisg
ICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNTRVJUKG9m
ZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZz
ZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAgICAgfHwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOwor
ICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxp
ZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0
IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsK
KyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3Qg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxp
ZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsK
KyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJu
IG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGlu
ZU9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFz
dE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNr
T2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQor
ICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVT
bG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5l
eHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQor
eworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxP
YmplY3RUeXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmly
c3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQ
cm9wZXJ0eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAg
IHJldHVybiBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNp
b24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0K
ICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQ
cm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNv
bnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVy
biBtX29mZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBz
ZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQor
ICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcg
KzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMg
PSBnZXR0ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBv
ZmZzZXQpCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RC
YXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZh
bHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4g
cmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBi
ZWZvcmUuCiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3Qg
bmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBv
dmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBt
X29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlw
ZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhp
c1ZhbHVlOwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgbV9vZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5
VHlwZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQ
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0
ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0
KQorICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3Rp
bmdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29m
ZnNldCA9IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHko
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVy
dHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNl
OwpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wg
aXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAg
ICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7
CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUo
Z2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZv
KQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQot
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkg
PyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNl
dChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2lu
ZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERh
dGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1f
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwg
bV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAg
ICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMo
ZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMt
PnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJ
bmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5n
KQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxp
bmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rp
b25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFi
bGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAg
ICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29w
eShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcChKCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAg
ICAgIGNyZWF0ZVByb3BlcnR5TWFwKG1fb2Zmc2V0ICsgMSk7CisgICAgICAgIGNyZWF0ZVByb3Bl
cnR5TWFwKG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KSk7CiAKICAgICBmb3Ig
KHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkgewogICAg
ICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMjU2LDIxICsyNTYsMjEgQEAgdm9p
ZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIH0KIAotaW5saW5l
IHNpemVfdCBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1cnJlbnRDYXBhY2l0
eSkKK2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3Vy
cmVudENhcGFjaXR5KQogewogICAgIGlmICghY3VycmVudENhcGFjaXR5KQogICAgICAgICByZXR1
cm4gNDsKICAgICByZXR1cm4gY3VycmVudENhcGFjaXR5ICogMjsKIH0KIAotdm9pZCBTdHJ1Y3R1
cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCit2b2lkIFN0cnVjdHVyZTo6Z3Jvd091
dE9mTGluZUNhcGFjaXR5KCkKIHsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ID0gbmV4
dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAg
IG1fb3V0T2ZMaW5lQ2FwYWNpdHkgPSBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0
T2ZMaW5lQ2FwYWNpdHkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdQcm9w
ZXJ0eVN0b3JhZ2VTaXplKCkKK3NpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eSgpCiB7Ci0gICAgcmV0dXJuIG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gbmV4dE91dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eShtX291dE9mTGluZUNhcGFjaXR5KTsKIH0KICAKIHZvaWQgU3RydWN0
dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3BlY2lmaWNWYWx1
ZS5jbGVhcigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKQEAgLTI5
Niw3ICsyOTYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRp
b24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlmIChzcGVjaWZp
Y1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBzcGVjaWZpY1Zh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5z
aXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhp
c3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICBv
ZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0OwogICAgICAgICByZXR1cm4gZXhp
c3RpbmdUcmFuc2l0aW9uOwogICAgIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkK
K1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUgYSBzcGVjaWZpYyBmdW5jdGlv
biwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhlcmUgaXMKICAgICAvLyBhbHJl
YWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3BlcnR5IG5hbWUgYW5kIGF0dHJp
YnV0ZXMsIGJ1dApAQCAtMzI3LDggKzMyNyw4IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXQKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICBB
U1NFUlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24pOwogICAgICAgICBvZmZzZXQgPSB0cmFuc2l0
aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAg
ICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAg
IGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXplKCkgPiB0cmFuc2l0aW9uLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKQorICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5
KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KICAgICAKQEAgLTM1MywxNSAr
MzUzLDE1IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICB9
CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHRyYW5z
aXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCi0gICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpOworICAgIGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXplKCkgPiB0cmFuc2l0aW9u
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKIAogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgIHN0
cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwog
ICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtNTQ4LDE4ICs1NDgsMTkgQEAgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogCiAgICAgICAgIHNpemVfdCBwcm9w
ZXJ0eUNvdW50ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CiAgICAgICAgIFZlY3RvcjxKU1Zh
bHVlPiB2YWx1ZXMocHJvcGVydHlDb3VudCk7Ci0KKyAgICAgICAgCiAgICAgICAgIHVuc2lnbmVk
IGkgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdE9mZnNldCA9IGZpcnN0UHJvcGVy
dHlPZmZzZXRGb3IobV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICBQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwogICAgICAgICBmb3IgKFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIsICsraSkgewogICAgICAgICAgICAgdmFsdWVzW2ldID0gb2JqZWN0LT5n
ZXREaXJlY3RPZmZzZXQoaXRlci0+b2Zmc2V0KTsKICAgICAgICAgICAgIC8vIFVwZGF0ZSBwcm9w
ZXJ0eSB0YWJsZSB0byBoYXZlIHRoZSBuZXcgcHJvcGVydHkgb2Zmc2V0cwotICAgICAgICAgICAg
aXRlci0+b2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGkgKyBmaXJzdE9m
ZnNldDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ29weSB0aGUgb3JpZ2luYWwg
cHJvcGVydHkgdmFsdWVzIGludG8gdGhlaXIgZmluYWwgbG9jYXRpb25zCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50OyBpKyspCi0gICAgICAgICAgICBvYmpl
Y3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBpLCB2YWx1ZXNbaV0pOworICAgICAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgZmlyc3RPZmZzZXQgKyBpLCB2
YWx1ZXNbaV0pOwogCiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+Y2xlYXJEZWxldGVkT2Zmc2V0
cygpOwogICAgIH0KQEAgLTU2OCw3ICs1NjksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Zmxh
dHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7CiAg
ICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01NzksMTMgKzU4MCwxMyBAQCBz
aXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuCiAgICAgCiAgICAgcGluKCk7
CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChwcm9wZXJ0eVN0
b3JhZ2VTaXplKCkgPiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBncm93UHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwdXRT
cGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSk7CisgICAgaWYgKG91dE9mTGluZVNpemUoKSA+IG91dE9mTGluZUNhcGFjaXR5KCkp
CisgICAgICAgIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBB
U1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0
aW9uQ2FjaGUpOwpAQCAtNTkzLDggKzU5NCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5V2l0aG91dFQKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnlGb3JQ
aW5uaW5nKGdsb2JhbERhdGEpOwogCiAgICAgcGluKCk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHJl
bW92ZShwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBvZmZzZXQ7CisgICAgcmV0dXJuIHJlbW92
ZShwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6cGluKCkKQEAgLTYzOSwyMCAr
NjM5LDIwIEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AKIAogUGFz
c093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlu
bmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogb3duZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG1fb2Zm
c2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG1f
cHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9w
cm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG51bWJlck9mU2xvdHNGb3JMYXN0T0Zm
c2V0KG1fb2Zmc2V0KSkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBp
bnZhbGlkT2Zmc2V0OwogCiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5
VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQot
ICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZz
ZXQ7CiAKICAgICBhdHRyaWJ1dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7CiAgICAgc3BlY2lmaWNW
YWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmdldCgpOwpAQCAtNjg1LDkgKzY4NSw5IEBAIHZv
aWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3Bl
Y2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKQogewotICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
KSA9PSBub3RGb3VuZCk7CisgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KGdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpKSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBEb250RW51bSkKQEAgLTY5OCwxMiArNjk4LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAg
ICAgICBjcmVhdGVQcm9wZXJ0eU1hcCgpOwogCi0gICAgdW5zaWduZWQgbmV3T2Zmc2V0OwotCi0g
ICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQotICAgICAgICBuZXdP
ZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPmdldERlbGV0ZWRPZmZzZXQoKTsKLSAgICBlbHNlCi0g
ICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOworICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+bmV4dE9mZnNldChtX3R5cGVJbmZv
LnR5cGUoKSk7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGds
b2JhbERhdGEsIHRoaXMsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KSk7CiAKQEAgLTcxMSw3ICs3MDYsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6
cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKIApAQCAtNzI0LDcgKzcxOSw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQ
cm9wZXJ0eU5hbWUgcHIKICAgICBpZiAoIXBvc2l0aW9uLmZpcnN0KQogICAgICAgICByZXR1cm4g
bm90Rm91bmQ7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OwogCiAg
ICAgbV9wcm9wZXJ0eVRhYmxlLT5yZW1vdmUocG9zaXRpb24pOwogICAgIG1fcHJvcGVydHlUYWJs
ZS0+YWRkRGVsZXRlZE9mZnNldChvZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVt
cFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0
dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBzaXpl
X3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVy
dHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0xMDMsMzIgKzEwMywz
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEm
KTsKICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50
RXh0ZW5zaW9uczsgfQogICAgICAgICBib29sIGRpZFRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2RpZFRyYW5zaXRpb247IH0KLSAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd1Byb3BlcnR5U3Rv
cmFnZSgpCisgICAgICAgIGJvb2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gcHJv
cGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0
eSgpID49IG91dE9mTGluZVNpemUoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgh
bV9wcm9wZXJ0eVRhYmxlKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGlu
ZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG91
dE9mTGluZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOworICAgICAgICAgICAgICAgIHJldHVy
biBjdXJyZW50U2l6ZSA9PSBvdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+
PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBB
U1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5
U3RvcmFnZVNpemUoKSk7CiAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxl
dGVkT2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3Bl
cnR5VGFibGUtPnNpemUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5z
aXplKCkgPT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIEFTU0VSVCh0
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSB0b3RhbFN0b3JhZ2VDYXBh
Y2l0eSgpOwogICAgICAgICB9Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdn
ZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3Qgc3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAogCiAgICAg
ICAgIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
SlNPYmplY3QqKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAg
ICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFByb3BlcnR5T2Zmc2V0IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJv
dG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBl
KTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVy
biBtX2RpY3Rpb25hcnlLaW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTQ5LDE4ICsx
NDksODYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5
cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIFN0cnVjdHVyZSogcHJldmlv
dXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZv
KTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91
c0lEKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdl
dCgpOworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJv
bShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAgICAgdm9pZCBncm93UHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9Ci0gICAgICAgIHVuc2lnbmVk
IHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZz
ZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6ZV90IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0
OwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7Ci0KLSAgICAgICAg
c2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBzaXplX3Qg
Z2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICB2b2lkIGdy
b3dPdXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0
eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBh
Y2l0eTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25G
aW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJ
bmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVy
dHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVy
dHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICh0b3Rh
bFNpemUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxp
bmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2ln
bmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9IEZpbmFsT2JqZWN0VHlw
ZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSAtIGlubGluZVN0b3Jh
Z2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9y
TGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZM
aW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3Rh
bFNpemUgPCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3Jh
Z2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBl
KCkgPT0gRmluYWxPYmplY3RUeXBlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5Owor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5l
U2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQg
KyAxOworICAgICAgICAgICAgaWYgKHJlc3VsdCA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUtu
b3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3Jh
Z2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRP
ZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFz
UmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90
bzsgfQpAQCAtMTc3LDcgKzI0NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVt
ZXJhYmxlUHJvcGVydGllczsgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkg
OiBtX29mZnNldCA9PSBub09mZnNldDsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVy
biAhaXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJh
Y2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5j
dGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGlj
dGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtp
bmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsK
LSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0
eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKTsKQEAgLTMwMSw3ICszNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRy
YW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRo
ZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3
ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0g
ICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAx
OworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0
KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAtMzEwLDggKzM4Myw2IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0
aW9uTGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBub09mZnNldCA9IC0x
OwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhy
YXNoQ291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CkBAIC0zMzYsMTAg
KzQwNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIG11dGFibGUgSW5s
aW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogCi0gICAgICAgIHVp
bnQzMl90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIHVpbnQzMl90IG1fb3V0
T2ZMaW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBm
b3IgYW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6
IDI7CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwpAQCAtMzUzLDI2
ICs0MjQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVu
Y3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAg
ICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJl
dHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0g
bV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJu
IGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCi0gICAgaW5s
aW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAg
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAg
ICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Cisg
ICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVu
dHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkp
LmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7
CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0Owog
ICAgIH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVm
aW5lZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150346</attachid>
            <date>2012-07-01 16:53:05 -0700</date>
            <delta_ts>2012-07-01 18:24:42 -0700</delta_ts>
            <desc>prop storage load patching is implemented</desc>
            <filename>overflowstorage_patch_6.diff</filename>
            <type>text/plain</type>
            <size>131238</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxMi0wNy0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29t
cHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAg
IChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRMb2FkSW5zdHJ1
Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChYODZB
c3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
Lmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVHbG9iYWxTdGF0
dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQpOgorICAgICAg
ICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0
Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2Vzcyk6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQ
cm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VT
dHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJi
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpncm93T3V0T2ZM
aW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2Nh
dGlvbik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNJ
bmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6b3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpv
ZmZzZXRGb3JMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpK
U05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNOb25G
aW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpKU09iamVjdCk6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
OgorICAgICAgICAoUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TWFw
RW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoUHJvcGVydHlUYWJsZSk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlU
YWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6Om5l
eHRPZmZzZXQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5T2Zmc2V0Lmg6IEFkZGVk
LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Y2hlY2tPZmZzZXQpOgorICAgICAgICAo
SlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzVmFsaWRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzT3V0T2ZMaW5lT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5SZXNw
ZWN0aXZlU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JM
YXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAgICAgICAoSlNDOjpmaXJz
dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNl
dENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNsZWFy
T2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAgICAo
SlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJv
cGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5
TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpv
dXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6
ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGlu
ZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpv
dXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJbmxpbmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRv
dGFsU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTItMDYtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdCB3YXN0ZXMgdG9vIG11Y2ggbWVtb3J5IG9uIHVu
dXNlZCBwcm9wZXJ0eSBzbG90cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsNiArNjcyLDE2IEBAIHByb3RlY3RlZDoKICAg
ICB7CiAgICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQ
dHIuZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aExvYWQoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBBc3NlbWJs
ZXJUeXBlOjpyZXBsYWNlV2l0aExvYWQobGFiZWwuZGF0YUxvY2F0aW9uKCkpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9j
YXRpb25MYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIyLDYgKzEyMiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVy
VG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1
bmN0aW9uKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2Nh
dGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VX
aXRoTG9hZChsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24oQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKENvZGVMb2NhdGlvbkxh
YmVsIGxhYmVsLCBib29sIGlzQWN0aXZlKQorICAgIHsKKyAgICAgICAgaWYgKGlzQWN0aXZlKQor
ICAgICAgICAgICAgcmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOworICAgIH0KIAogcHJp
dmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODM5LDYgKzE4MzksNDIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gNTsKICAgICB9CiAg
ICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQpCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpw
dHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAgICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAg
ICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2FzZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgICpwdHIgPSBPUF9NT1Zf
R3ZFdjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZfNjQpCisgICAgICAgIGlmICgoKnB0
ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0cisrOworI2VuZGlmCisgICAgICAg
IHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01PVl9HdkV2OgorICAgICAgICAgICAg
KnB0ciA9IE9QX0xFQTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgc3RhdGljIHVuc2ln
bmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcs
NiArMTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZQogICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWQiOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICAgICAgb3AgPSAi
Z2V0X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9nZXRf
YnlfaWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3NlbGYiOwogICAgICAgICBicmVh
azsKQEAgLTQ5MSw3ICs0OTQsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmVzKGNv
bnN0IEluCiAgICAgICAgIGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rp
b25PZmZzZXQsICJnZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRd
LnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVd
LnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9w
dXRfYnlfaWQpKSB7CisgICAgICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9wdXRfYnlfaWQpIHx8IHZQQ1swXS51LikgewogICAgICAgICBwcmludFN0
cnVjdHVyZSgicHV0X2J5X2lkIiwgdlBDLCA0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEwMzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5
X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWluOgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6
IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVy
aWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAg
IEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgewogICAgICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpAQCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAg
ICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJ
bnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYg
SGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9
PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIAogICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2UsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBv
ZmZzZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAgICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9
IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAo
cmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1
bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0
cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAgLTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0
YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAK
LSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAo
aXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgICAgICByZXN1bHQubV9z
dHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZp
Y1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFs
aWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9z
dHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTc5LDcgKzE3
OSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAg
ICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3Bl
Y2lmaWNWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9PSBu
b3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkgewog
ICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVj
dHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlz
VmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
bV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIzLDEx
ICsyMjMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNl
dCA9PSBub3RGb3VuZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQubV9v
ZmZzZXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zm
c2V0KSkgewogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAgICAg
IHJlc3VsdC5tX3N0cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFpbi5j
bGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEdldEJ5SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVk
ZSA8d3RmL05vdEZvdW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICBH
ZXRCeUlkU3RhdHVzKCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAgICAg
ICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkK
ICAgICB7CiAgICAgfQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRlIHN0
YXRlLCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQg
PSBTdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9
IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJl
Kj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRl
KQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX2No
YWluKGNoYWluKQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAg
IGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWlu
OyB9IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzLgog
ICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1
ZTsgfSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1ZS4K
LSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogICAg
IGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAg
ICAKQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBtX3Nw
ZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1f
b2Zmc2V0OwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2
ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRo
X2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9y
ZXNvbHZlX3dpdGhfdGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAg
IG1hY3JvKG9wX2dldF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAg
ICAgIG1hY3JvKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHByb2Zp
bGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMgdmFs
dWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2No
YWluLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50
c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAgICBp
ZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0gICAg
ICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZAorICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAw
LCBvZmZzZXQpOwogICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dAotICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAgICAg
ICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGlu
ZSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51
LnN0cnVjdHVyZS5nZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlv
bls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOwog
ICAgIEFTU0VSVChjaGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVy
ZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAob2Zm
c2V0ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmV3
U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVy
ZSwgY2hhaW4sIG9mZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2Uu
YmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAgICAg
ICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgp
LAogICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBhY2Nl
c3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1
dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBp
ZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAg
IFNpbXBsZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBz
dHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAgICAg
IG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAg
IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8gRU5B
QkxFKEpJVCkKLSAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgaW52YWxpZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5SWRT
dGF0dXNfaAogI2RlZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zm
c2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAgICAg
ICAgLCBtX25ld1N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkKLSAg
ICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zm
c2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAgIHNp
emVfdCBvZmZzZXQpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgOiBt
X3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKICAg
ICAgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAgICAg
ICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVyZUNo
YWluKTsKLSAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAgICAg
QVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQ
YXRoKSA9PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0K
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0
dXJlOyB9CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJ1Y3R1cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1fb2xk
U3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJl
Q2hhaW4qIG1fc3RydWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3Bl
cnR5T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDkg
QEAgc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cgogewogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnRpZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChvZmZz
ZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAg
IHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAgICAgcmV0dXJuIFJlc29sdmVH
bG9iYWxTdGF0dXMoUmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxlLCBzdHJ1Y3R1cmUsIG9mZnNl
dCwgc3BlY2lmaWNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVzb2x2ZUdsb2JhbFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1c19o
CiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNp
bmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAgICAg
ICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNldCA9
IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAw
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1ZhbHVl
IHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAg
ICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVibGlj
OgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFr
ZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3Ry
dWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBjbGFz
cyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2luZ0lu
bGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFt
X3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNldCBt
dXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3RydWN0
dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBzY3Jh
dGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAgICAg
ICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAgICAg
ICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50MzJf
dCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDaGVj
a0ltbVRvQ2FsbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTks
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGJv
b2wgdXNlc1Jlc3VsdCwgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgdm9pZCBoYW5k
bGVHZXRCeU9mZnNldCgKICAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRl
ZFR5cGUsIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgICAg
ICBib29sIHVzZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZzZXQpOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgaW50IGRl
c3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUsIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLAogICAgICAgICBjb25zdCBHZXRCeUlkU3RhdHVzJik7CkBAIC0x
NjMwLDE3ICsxNjMwLDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50
ZXIKIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgaW50IGRl
c3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZUluZGV4IGJh
c2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdl
LCBzaXplX3Qgb2Zmc2V0KQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBOb2Rl
SW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7Ci0gICAgaWYg
KHVzZUlubGluZVN0b3JhZ2UpIHsKKyAgICBzaXplX3QgYWN0dWFsT2Zmc2V0OworICAgIGlmIChp
c0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7
CiAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpOworICAgICAgICBhY3R1YWxPZmZzZXQgPSBzaXplb2YoSlNPYmplY3Qp
IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0
UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKKyAgICAg
ICAgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkKICAgICB9
CiAgICAgc2V0KGRlc3RpbmF0aW9uT3BlcmFuZCwKICAgICAgICAgYWRkVG9HcmFwaCgKQEAgLTE2
NDgsNyArMTY0OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAog
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlKSk7CiAgICAgICAgIAogICAgIFN0b3JhZ2VBY2Nl
c3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9
IG9mZnNldCArIG9mZnNldE9mZnNldDsKKyAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBh
Y3R1YWxPZmZzZXQ7CiAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlk
ZW50aWZpZXJOdW1iZXI7CiAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChz
dG9yYWdlQWNjZXNzRGF0YSk7CiB9CkBAIC0xNjc3LDcgKzE2NzcsNiBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgo
Q2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnZXRCeUlkU3Rh
dHVzLnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOwogICAgIAotICAgIGJvb2wgdXNlSW5saW5lU3Rv
cmFnZTsKICAgICBpZiAoIWdldEJ5SWRTdGF0dXMuY2hhaW4oKS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVT
ZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKTsKICAgICAgICAgSlNPYmplY3QqIGN1cnJlbnRPYmpl
Y3QgPSAwOwpAQCAtMTY4Niw5ICsxNjg1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0QnlJZCgKICAgICAgICAgICAgIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLmNo
YWluKClbaV07CiAgICAgICAgICAgICBiYXNlID0gYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNr
KGN1cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIHVz
ZUlubGluZVN0b3JhZ2UgPSBjdXJyZW50U3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
OwotICAgIH0gZWxzZQotICAgICAgICB1c2VJbmxpbmVTdG9yYWdlID0gZ2V0QnlJZFN0YXR1cy5z
dHJ1Y3R1cmVTZXQoKS5hbGxBcmVVc2luZ0lubGluZVByb3BlcnR5U3RvcmFnZSgpOworICAgIH0K
ICAgICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBidWdzIGxpa2UgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3ZSBuZWVkIHRvCiAgICAgLy8gZW5zdXJlIHRo
YXQgdGhlIGJhc2Ugb2YgdGhlIG9yaWdpbmFsIGdldF9ieV9pZCBpcyBrZXB0IGFsaXZlIHVudGls
IHdlJ3JlIGRvbmUgd2l0aApAQCAtMTcwNyw4ICsxNzA0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICB9CiAgICAgCiAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCi0g
ICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51
bWJlciwgdXNlSW5saW5lU3RvcmFnZSwKLSAgICAgICAgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7
CisgICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmll
ck51bWJlciwgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQpAQCAtMjI1OSwyMCArMjI1NSwyMCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmICghaGFzRXhpdFNpdGUgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVJlcGxhY2UoKSkg
ewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dy
YXBoLmFkZFN0cnVjdHVyZVNldChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpKSksIGJhc2Up
OwotICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAgICAg
c2l6ZV90IGFjdHVhbE9mZnNldDsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlT
dG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgp
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHB1dEJ5SWQub2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
U3RvcmFnZSA9IGJhc2U7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09i
amVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9m
ZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShwdXRCeUlkLm9mZnNl
dCgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGFj
dHVhbE9mZnNldCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShwdXRCeUlkLm9mZnNldCgpKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeU9mZnNl
dCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLCBwcm9wZXJ0eVN0
b3JhZ2UsIGJhc2UsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBT
dG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAgICAgICAgICBzdG9y
YWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgpICsgb2Zmc2V0T2Zm
c2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGFjdHVhbE9m
ZnNldDsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVy
ID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWhhc0V4aXRTaXRlCkBAIC0yMzA4LDE1ICsyMzA0LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSkpKSwKICAgICAgICAgICAgICAgICAgICAgYmFz
ZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNl
dDsKKyAgICAgICAgICAgICAgICBzaXplX3QgYWN0dWFsT2Zmc2V0OwogICAgICAgICAgICAgICAg
IE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRT
dGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAv
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbE9mZnNl
dCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKHB1dEJ5SWQub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJv
cGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsT2Zmc2V0ID0gb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHB1dEJ5SWQub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgICAgICBQdXRCeU9mZnNldCwKQEAgLTIz
MjYsNyArMjMyMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAg
ICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBv
ZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0g
YWN0dWFsT2Zmc2V0OwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZp
ZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9z
dG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTI3MzgsOCArMjczNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGdsb2JhbE9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5zdHJ1Y3R1cmUoKS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5v
ZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0
dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVOdW1iZXIrKzsgLy8gU2tpcCBvdmVyIHRoZSB1bnVz
ZWQgZ2xvYmFsIHJlc29sdmUgaW5mby4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgdm9pZCBkZmdSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvCiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZWxpbmsoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBkZmdSZXBh
dGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1
bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3QpCitzdGF0aWMgdm9pZCBk
ZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgY29uc3QgRnVuY3Rpb25QdHIgJnNsb3dQYXRoRnVuY3Rpb24sIGJvb2wgY29tcGFjdCkK
IHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTIs
MTggKzUyLDE5IEBAIHN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2QKIAog
ICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgJiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2Fk
LgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
aGVja0ltbVRvQ2FsbCksIHN0cnVjdHVyZSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoY29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dEluUmVzcGVjdGl2ZVN0b3JhZ2Uob2Zmc2V0KSk7CiAgICAgZWxzZQotICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJblJl
c3BlY3RpdmVTdG9yYWdlKG9mZnNldCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBp
ZiAoY29tcGFjdCkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0g
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJl
bENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2Uob2Zmc2V0
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7
CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluUmVzcGVjdGl2
ZVN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1Zh
bHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSk7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xv
YWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZShv
ZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluUmVzcGVjdGl2
ZVN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcgKzEwNiw3IEBA
IHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBsaW5rUmVzdG9y
ZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWls
LCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93
Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xv
d0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKK3N0YXRpYyB2
b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRp
b25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsxNDAsMjMgQEAg
c3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAgICBjdXJyU3Ry
dWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0LmxvYWRQdHIocHJv
dG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIpOworICAgIGlm
IChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKHByb3RvT2JqZWN0LT5s
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpKSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBv
ZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAg
ICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmpl
Y3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0Lmxv
YWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZk91dE9mTGluZXRvcmFnZSgpLCByZXN1bHRHUFIp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQp
ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHRHUFIpOworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgc3R1YkppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3Vs
dEdQUik7CisjZW5kaWYKKyAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNz
LCBmYWlsOwogICAgIApAQCAtNTY3LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBs
YWNlU3R1YigKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlciBzdHViSml0OwogICAgIAotICAgIGlm
IChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRlZCB8fCAh
c3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSkgeworICAgIGlmIChzY3JhdGNoR1BS
ID09IEludmFsaWRHUFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRlZCB8fCBpc091dE9mTGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkpIHsKICAgICAgICAgc2NyYXRjaEdQUiA9IFNwZWN1
bGF0aXZlSklUOjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAgICAgICAg
bmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSB0cnVlOwogICAgICAgICBzdHViSml0LnB1c2goc2NyYXRj
aEdQUik7CkBAIC01ODYsMjAgKzU5NywyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0
dWIoCiAjZW5kaWYKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
KyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0
dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2Ugewot
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAg
ICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAg
ICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0
dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVv
ZihKU1ZhbHVlKSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0
cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3Jl
MzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGlu
ZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9m
ZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZh
bHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3Jl
MzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9m
TGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFs
dWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAg
ICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTY4NSwyMCArNjk2
LDIwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKIAogICAgIHN0dWJKaXQu
c3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSkKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAg
fQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5s
aW5lU3RvcmFnZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2Ny
YXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc3RJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7
CiAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0Myw3ICszNTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
IAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAg
c3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NjcsNyArMzU2Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJl
c3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
ICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRl
eCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogICAgIH0KIAogICAgIGlmIChpc0pT
RmluYWxPYmplY3QoY2VsbCkpIHsKLSAgICAgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29u
c3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CisgICAgICAgIEpTRmluYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQorICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4ICszMjAsMTEgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmls
ZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRl
eCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMTYzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9o
aWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUu
c2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAg
ICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNh
Y2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtOTUyLDcgKzk1OCwxMCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGds
b2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3Ry
dWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBA
IC05NjAsMTYgKzk2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X2lkCiAgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHBjWzhdLnUub3BlcmFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bj
b2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5v
cGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xv
dC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUu
c2V0KAogICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjE2
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA4NywzMSArMTA4Nyw1OCBAQCBfbGxpbnRfb3Bf
cHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkKIAogCi1fbGxpbnRfb3BfZ2V0
X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBu
b3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBh
bGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorIyBw
aW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlf
aWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBB
dCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorIyB3ZSB3b3VsZCBoYXZl
IGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9i
eV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQotICAgICMgb3Bj
b2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGlt
ZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdl
IGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCi0gICAgIyB0byB0YWtl
IGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwg
d2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KICAg
ICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBs
b2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qz
XSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRT
bG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQz
Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgotICAgIHN0b3JlaSB0MywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQot
ICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MywKKyAg
ICAgICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93
CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICAgICAgICAgIGxvYWRpIFRhZ09mZnNl
dFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKKyAgICAgICAgICAgIHN0b3JlaSBzY3Jh
dGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZGkgMzJbUENdLCB0MQorICAgICAg
ICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQyLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNo
KDkpCisgICAgICAgIAorICAgICAgICAub3BHZXRCeUlkU2xvdzoKKyAgICAgICAgICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgICAgIGRpc3BhdGNo
KDkpCisgICAgICAgIGVuZCkKK2VuZAogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKK21hY3JvIHdp
dGhJbmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24pCisg
ICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5IHN0b3JhZ2UsIGFu
ZCB0aGF0IHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBpcyB1bnVzZWQuCisg
ICAgY29udGludWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQorZW5kCisKK21hY3JvIHdp
dGhPdXRPZkxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24p
CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5
U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVy
IG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUg
b2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRl
ciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFn
ZSwgb2JqZWN0KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3aXRo
SW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAg
IGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1Nyw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50
c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFj
cm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxv
YWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNs
b3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFn
T2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAg
IGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAg
ICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2Ny
YXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5
U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVy
dHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2Vu
ZAogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
dXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAorX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBw
dXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAotbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykK
ICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRC
eUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10s
IHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBh
ZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0g
ICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAg
ICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAg
IHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAg
IGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBt
YWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJv
cGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEK
KyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0
b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkp
CisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0
dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJl
dXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2Fk
cCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3Jh
dGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJp
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxs
VGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1
cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBi
aW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51
bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNj
cmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVj
a3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFs
Q2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAo
b2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxs
ID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9y
IHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAot
ICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAg
ICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNo
Ci0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0g
ICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2Fk
aSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBw
cm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxs
XSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNo
XSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcs
IC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRp
b24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRy
YW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAK
IF9sbGludF9vcF9nZXRfYnlfdmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNsYXNz
IEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5kKQot
ICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9w
ZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXpl
ID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVyYW5k
c1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAg
ICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVn
aXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3Rl
cklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBvcGVy
YW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4
ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KICAg
ICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9wZXJh
bmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMjQgKzkzLDU0IEBAIHZv
aWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKICAgICBib29sIHdhc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1
bHRNYXJrVmlvbGF0aW9uOwogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKKworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09i
amVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNp
emVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXpl
Rm9yS25vd25Ob25GaW5hbE9iamVjdCgpOworICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEg
dGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdo
byBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KKyAgICAgICAgdm9pZCogdGVtcCA9
IHN0b3JhZ2U7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVj
dC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICBz
dG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKKyAgICAgICAgdGhp
c09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6
VW5jaGVja2VkKTsKKyAgICB9CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOworCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1h
cmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworI2VuZGlm
Cit9CiAKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit2
b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBKU0ZpbmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RmluYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIHdhc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1
bHRNYXJrVmlvbGF0aW9uOworICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJl
bih0aGlzLCB2aXNpdG9yKTsKIAotICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09i
amVjdC0+cHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBpZiAodGhpc09i
amVjdC0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1
ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwotICAgIGVsc2UgeworICAgIFByb3BlcnR5U3RvcmFn
ZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9y
YWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOwogICAgICAgICAvLyBXZSBo
YXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJs
b29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAg
ICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgm
dGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3Rv
cmFnZVNpemUpOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKICAgICAgICAg
c3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0gICAgICAgIHRo
aXNPYmplY3QtPm1fcHJvcGVydHlTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6
VW5jaGVja2VkKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChz
dG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAgICBpZiAodGhp
c09iamVjdC0+bV9pbmhlcml0b3JJRCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faW5oZXJpdG9ySUQpOwogCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVj
dC0+c3RydWN0dXJlKCktPmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXMoaW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7CisKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAjZW5kaWYKQEAg
LTE1Myw4ICsxODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
CiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChw
cm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFk
T25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTUxOSwxNyArNTQ5LDE3IEBA
IGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEKICAgICBpZiAoc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zm
c2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0
U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlm
IChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZz
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1ICs1ODksMjIgQEAgU3RydWN0
dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAgIHJldHVybiBtX2luaGVyaXRv
cklELmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dQcm9wZXJ0eVN0
b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5l
d1NpemUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQog
ewogICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICAvLyBJdCdzIGltcG9ydGFu
dCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIHNpbmNlCiAgICAg
Ly8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zaXRpb24uCiAKLSAgICBQcm9w
ZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7
CisgICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fb3V0T2ZMaW5lU3Rv
cmFnZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gMDsK
IAotICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgaWYgKCFvbGRQcm9wZXJ0
eVN0b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBz
bGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2Ug
dHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBuZXdQcm9wZXJ0eVN0
b3JhZ2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShz
aXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdTaXplLCAmdGVtcCkpCiAgICAg
ICAgICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBv
bGRQcm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0
aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBv
ZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZv
aWQqIHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQsOCArNjIxLDggQEAgYm9vbCBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgaWYgKG9m
ZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3Jp
cHRvci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJp
YnV0ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNCArNzksNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVy
dHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgfTsKIAotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0j
ZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDYKLSNlbHNlCi0jZGVm
aW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKLSNlbmRpZgotCi1DT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gMCksIGZp
bmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsKLQogICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE2OSwyNiArMTYxLDY0IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgLy8gVGhpcyBnZXQg
ZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgICAgICBKU1ZhbHVl
IGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpT
VmFsdWUoKTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0
KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDog
SlNWYWx1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAg
cmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChv
ZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDog
MDsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERp
cmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpT
Q2VsbCogc3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNGdW5jdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQg
PyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3Ry
dWN0dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3Rv
cmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENv
bnN0UHJvcGVydHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVy
dHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
aGFzSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJv
cGVydHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENv
bnN0UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX291
dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGlu
ZVN0b3JhZ2UoKSB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKworICAgICAg
ICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFn
ZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAm
b3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKICAg
ICAgICAgfQogCi0gICAgICAgIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gLSBwcm9wZXJ0eVN0b3JhZ2UoKTsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdl
KCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIHZh
bGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5z
aXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTIwNSw5ICsyMzUsOSBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgcHV0
T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVy
dHkgb2Zmc2V0cy4KLSAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAg
ICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNl
dFVuZGVmaW5lZCgpOyB9CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9jYWxGb3JPZmZzZXQob2Zmc2V0KS0+Z2V0
KCk7IH0KKyAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQorICAgICAgICB2
b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBs
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIApAQCAtMjI4LDI0ICsyNTgsMTYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7
IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAgICAg
IHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd1Byb3BlcnR5U3Rv
cmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwotICAg
ICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPQotICAgICAgICAgICAgICAgICFtX3Byb3BlcnR5U3RvcmFnZS5n
ZXQoKQotICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3Bl
cnR5U3RvcmFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsK
LSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAg
ICB2b2lkIHNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2Us
IFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2Ug
Z3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplKTsKKyAgICAgICAgdm9pZCBzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICBib29s
IHJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxs
b2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNp
dHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVT
dG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAg
dm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgdm9pZCogYWRkcmVzc09m
T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmbV9wcm9w
ZXJ0eVN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4gJm1fb3V0T2ZMaW5lU3RvcmFnZTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQpAQCAtMjYxLDcgKzI4Myw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKLSAgICAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5oZXJp
dG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwpAQCAtMjg3LDcgKzMwOSw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtl
bHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2
ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAg
ICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OwogICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpA
QCAtMzA1LDE5ICszMjcsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwog
ICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVy
dHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpOyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNl
dCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZz
ZXRdOwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9v
bCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyAr
MzM2LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAg
ICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpT
R2xvYmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdl
OworICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0
ICszNjIsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpT
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewog
ICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsK
KyAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAg
IH07CkBAIC0zODEsNiArMzkwLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisK
ICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArMzk5LDE0
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZp
c2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFT
U0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUg
c2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VD
YXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNh
cGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0
aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQog
CkBAIC00MDAsMTMgKzQxNCwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxp
bmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
ICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3Rv
cmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFD
SVRZXTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDQ1
LDkgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAot
aW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5l
IHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAog
aW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQg
KzQ4NSwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsK
IH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsK
LSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAg
ICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2Fz
dDx2b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAg
IGlmICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0K
ICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5
U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVT
dG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtNTE2LDkgKzUzNCw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNW
YWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1p
bmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpT
T2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJv
cGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291
dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1
NjAsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0
dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0
cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJ
bmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUg
Ym9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7
Ci0gICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNh
cGFjaXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJ
bmZvKiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09m
KGluZm8pOwpAQCAtNjExLDEwICs2MTYsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6
ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blBy
b3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAo
IXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYm
ICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNp
emVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0
dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAg
ICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsK
LSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0
ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1
ZSgpOwpAQCAtNjc2LDggKzY4MSw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAg
IHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9u
KTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAv
LyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5v
dyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZl
cmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVu
Y3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpA
QCAtNzAwLDEzICs3MDUsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBu
ZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+
cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBn
cm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6
ZSgpKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9y
YWdlKCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9y
YWdlKCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5z
dWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9
IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFBy
b3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAg
ICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJl
KCkpOwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAg
IEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSk7CiAg
ICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAg
ICAgLy8gU2VlIGNvbW1lbnQgb24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAg
aWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQpAQCAtNzE0LDE1ICs3MjAsMTYgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBzaXplX3Qgb2Zmc2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQ7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxp
bmVDYXBhY2l0eSgpOwogICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSh0aGlzLT5zdHJ1Y3R1cmUo
KSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpKSB7
Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7
IAotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9y
YWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKLQotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2Jh
bERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBu
ZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOyAKKyAgICAgICAgaWYgKGN1cnJlbnRDYXBh
Y2l0eSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBuZXdT
dG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5
LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworCisgICAgICAgIHZhbGlkYXRlT2Zm
c2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnRvdGFsU3Rv
cmFnZUNhcGFjaXR5KCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEs
IG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxE
YXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsg
dHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFi
bGUsCiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUu
CkBAIC03MzQsNyArNzQxLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogY3VycmVu
dFNwZWNpZmljRnVuY3Rpb247CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbik7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKG9mZnNl
dCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAm
JiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC03NjgsNyArNzc1LDggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdElu
dGVybmFsKAogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwogICAgIAotICAgIEFTU0VS
VChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgIHZh
bGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+dG90
YWxTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3Jh
Z2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs3ODksMjIgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2FwYWNpdHkg
PT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgaWYgKG9s
ZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAg
ICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9w
ZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShn
bG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2JhbERhdGEs
IG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHNl
dE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsK
IH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNz
YXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC04MjQsMTEgKzgzMiwxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdTdG9yYWdl
ID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFn
ZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0
Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9y
YWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdy
b3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3Ry
dWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VTaXplKCkpOworICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmpl
Y3QodmFsdWUpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3Jh
Z2UsIHN0cnVjdHVyZSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCB2YWx1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw4IEBAIHZvaWQgSlNW
YWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBmb3IgKDsgOyBvYmogPSBhc09i
amVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAg
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3Ry
dWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlm
IChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMg
JiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQog
ICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAko
cmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gK
IAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTcy
LDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAK
IHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0gICAgdW5z
aWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7CiAKLSAg
ICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkK
ICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwg
YXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc1LDcgKzE3Niw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsK
ICAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zm
c2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChKU1R5
cGUgdHlwZSk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5zdXJpbmcgdGhl
IGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KICAgICBQYXNzT3duUHRy
PFByb3BlcnR5VGFibGU+IGNvcHkoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpOwpAQCAtMjMwLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQqIG1faW5kZXg7CiAgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKICAgICB1bnNpZ25lZCBtX2Rl
bGV0ZWRDb3VudDsKLSAgICBPd25QdHI8IFZlY3Rvcjx1bnNpZ25lZD4gPiBtX2RlbGV0ZWRPZmZz
ZXRzOworICAgIE93blB0cjwgVmVjdG9yPFByb3BlcnR5T2Zmc2V0PiA+IG1fZGVsZXRlZE9mZnNl
dHM7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWluaW11bVRhYmxlU2l6ZSA9IDE2Owog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOwpAQCAtMjY0LDkg
KzI2Nyw5IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wKICAgICB9
CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAgICBWZWN0b3I8
dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5n
ZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0g
b3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0
cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWdu
ZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykp
OwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEm
LCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5
VGFibGUmIG90aGVyKQpAQCAtMjg4LDkgKzI5MSw5IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQ
cm9wZXJ0eVRhYmxlKEpTR2wKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZz
ZXRzIHZlY3Rvci4KLSAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0g
b3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+
KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAg
ICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFk
b3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CisgICAg
ICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0
Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6flBy
b3BlcnR5VGFibGUoKQpAQCAtNDY5LDIwICs0NzIsMzEgQEAgaW5saW5lIGJvb2wgUHJvcGVydHlU
YWJsZTo6aGFzRGVsZXRlZE9mZgogICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYmICFtX2Rl
bGV0ZWRPZmZzZXRzLT5pc0VtcHR5KCk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRh
YmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRh
YmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIHsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2RlbGV0
ZWRPZmZzZXRzLT5sYXN0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9kZWxldGVk
T2Zmc2V0cy0+bGFzdCgpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3QoKTsKICAg
ICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxl
dGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFk
ZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghbV9kZWxl
dGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0
b3I8dW5zaWduZWQ+KTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8UHJvcGVydHlPZmZzZXQ+KTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zm
c2V0KTsKIH0KIAoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6Om5leHRPZmZz
ZXQoSlNUeXBlIHR5cGUpCit7CisgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKKyAgICAgICAg
cmV0dXJuIGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICAKKyAgICBpZiAodHlwZSA9PSBGaW5hbE9i
amVjdFR5cGUpCisgICAgICAgIHJldHVybiBzaXplKCk7CisgICAgCisgICAgcmV0dXJuIHNpemUo
KSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCiBpbmxpbmUgUGFzc093blB0cjxQcm9wZXJ0
eVRhYmxlPiBQcm9wZXJ0eVRhYmxlOjpjb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
ZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKG5ld0NhcGFj
aXR5ID49IG1fa2V5Q291bnQpOwpAQCAtNDk5LDcgKzUxMyw3IEBAIGlubGluZSBzaXplX3QgUHJv
cGVydHlUYWJsZTo6c2l6ZUluTWVtb3IKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gc2l6ZW9mKFBy
b3BlcnR5VGFibGUpICsgZGF0YVNpemUoKTsKICAgICBpZiAobV9kZWxldGVkT2Zmc2V0cykKLSAg
ICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICogc2l6ZW9mKHVu
c2lnbmVkKSk7CisgICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHko
KSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZz
ZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvcGVydHlPZmZzZXRf
aAorI2RlZmluZSBQcm9wZXJ0eU9mZnNldF9oCisKKyNpbmNsdWRlICJKU1R5cGUuaCIKKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisjZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBJTkxJTkVfU1RP
UkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA0
CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7CisKK3N0YXRpYyBjb25zdCBQ
cm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7CitzdGF0aWMgY29uc3QgUHJvcGVydHlP
ZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFk7Citz
dGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSBpbmxpbmVT
dG9yYWdlQ2FwYWNpdHk7CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0
ID49IGludmFsaWRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQp
OworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IGludmFsaWRP
ZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNldAorICAgICAgICAgICB8
fCB0eXBlID09IEZpbmFsT2JqZWN0VHlwZQorICAgICAgICAgICB8fCBpc091dE9mTGluZU9mZnNl
dChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlzVmFs
aWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0
LCB0eXBlKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5l
IGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tP
ZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQ7Cit9CisK
K2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgPCBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHk7Cit9CisKK2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiAhaXNJ
bmxpbmVPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0
b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNl
dCk7CisgICAgQVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBvZmZz
ZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VS
VChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0IC0gZmlyc3RP
dXRPZkxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZlU3Rv
cmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9m
ZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKKyAg
ICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lubGluZSBz
aXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA8IGZp
cnN0T3V0T2ZMaW5lT2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gb2Zmc2V0
IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQgKyAxOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9m
U2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7
CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBGaW5hbE9i
amVjdFR5cGUpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyAxOworICAgIHJldHVybiBudW1iZXJP
Zk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgUHJvcGVy
dHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNU
eXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlw
ZSAhPSBGaW5hbE9iamVjdFR5cGUgJiYgb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCisgICAgICAg
IHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICByZXR1cm4gb2Zmc2V0ICsgMTsKK30K
KworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IoSlNUeXBlIHR5
cGUpCit7CisgICAgcmV0dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZvcihpbnZhbGlkT2Zmc2V0LCB0
eXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm9wZXJ0eU9mZnNl
dF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlByb3Bl
cnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtODksNyArOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hlZFByb3BlcnR5VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9CiAgICAgICAgIGJvb2wg
aXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSAhPSBVbmNh
Y2hlYWJsZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVk
T2Zmc2V0KCkgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29u
c3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIG1fb2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIHNpemVf
dCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwgSlNWYWx1
ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQodmFsdWUpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEpTQ19WQUxVRV9NQVJLRVI7
CkBAIC0xNjAsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2RhdGEu
Z2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldENh
Y2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRlckZ1bmMs
IHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpT
VmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJGdW5jKTsKICAgICAgICAg
ICAgIG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwpAQCAtMjA2LDcgKzIwNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDbGVhciBvZmZz
ZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFByb3BlcnR5U2xvdCBoYXMg
YmVlbiB1c2VkIGJlZm9yZS4KICAgICAgICAgICAgIC8vIChGb3Igb3RoZXIgZGF0YSBtZW1iZXJz
LCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2UgcmV1c2Ugd291bGQgbWVh
bmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAg
ICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgIG1fY2FjaGVk
UHJvcGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgIH0KIApAQCAtMjMyLDcgKzIzMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgICAgIEpT
VmFsdWUgbV90aGlzVmFsdWU7CiAKLSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIG1fY2Fj
aGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNp
emVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVjdCog
YmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5
cGUgPSBFeGlzdGluZ1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKICAgICAg
ICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRO
ZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBz
ZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAg
ICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1f
YmFzZSA9IGJhc2U7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAg
ICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBVbmNhY2hh
YmxlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKICAgICAgICAgICAgIEFTU0VSVChp
c0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICAgICAgfQpA
QCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBU
eXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKLSAgICAgICAgc2l6ZV90IG1f
b2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgYm9vbCBt
X2lzU3RyaWN0TW9kZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw4ICsx
NTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBt
X3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNzSW5m
byhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVk
V2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZvLmlzRmlu
YWxPYmplY3QoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDogMCkKLSAg
ICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAg
ICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURp
Y3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAg
LCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0xNzksOCArMTc5LDggQEAg
U3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5
cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbygmc19pbmZv
KQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQot
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAgICwgbV9vZmZzZXQobm9PZmZz
ZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAg
LCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcyhmYWxzZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlz
LCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2aW91
cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxp
emVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHByZXZpb3VzLT5t
X3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAg
LCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291dE9mTGluZUNhcGFjaXR5KQorICAg
ICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQocHJldmlv
dXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxz
ZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2aW91cy0+bV9oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RydWN0dXJlOjpt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1f
cHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9wcmV2aW91
cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0
eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CisgICAgICAgICAgICBt
X3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxE
YXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3RydWN0dXJl
OjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1fcHJvcGVydHlU
YWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobV9vZmZzZXQgKyAxKTsKKyAgICAgICAg
Y3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsK
IAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsg
LS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1
NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQog
fQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3Vy
cmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5
KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAg
ICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12
b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0
dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dl
c3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVk
TmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBu
ZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAog
dm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcg
QEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5z
cGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0
KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0
aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAg
aWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9
IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4
aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0
ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7
CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7CiAgICAgICAg
IHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIFN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0K
IAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVf
dCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNp
ZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwog
ICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFt
ZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24g
PSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAgIG9mZnNl
dCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5zaXRpb24tPnBy
b3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRpb24t
Pm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZM
aW5lQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogICAgIApA
QCAtMzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAg
ICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+
IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5zaXRpb24tPmdy
b3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBvZmZz
ZXQ7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwgdHJh
bnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBv
ZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFz
dHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTggKzU0OCwx
OSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAgICAgICAg
c2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAgICAgICAg
VmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAKICAgICAg
ICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zmc2V0ID0g
Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAgICAg
IGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+YmVn
aW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1ZXNbaV0g
PSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAgICAgLy8g
VXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZzZXRzCi0g
ICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zmc2V0ID0g
aSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDb3B5IHRo
ZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlvbnMKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykKLSAgICAg
ICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVlc1tpXSk7
CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBmaXJzdE9m
ZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVhckRl
bGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAotc2l6ZV90
IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3OSwxMyAr
NTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4KICAgICAK
ICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYg
KHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAg
ICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4gb3V0T2ZMaW5l
Q2FwYWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgcmV0dXJu
IG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQo
IW1fZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAgICBzaXplX3Qg
b2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAgICBy
ZXR1cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpwaW4oKQpA
QCAtNjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6
OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25l
cikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5
VGFibGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAgICByZXR1cm4g
YWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwg
b3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVyT2ZTbG90
c0Zvckxhc3RPRmZzZXQobV9vZmZzZXQpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkK
IHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAg
ICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlm
ICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAg
ICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9
IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlm
ICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4g
aW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAg
ICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSAr
Njg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAg
ICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1
dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQ
cm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQoZ2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsK
ICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAtNjk4LDEyICs2OTgsNyBAQCBzaXpl
X3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAgICAgaWYgKCFtX3Byb3BlcnR5
VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKCk7CiAKLSAgICB1bnNpZ25lZCBuZXdP
ZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCi0g
ICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+Z2V0RGVsZXRlZE9mZnNldCgpOwot
ICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7Cisg
ICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0
KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3BlcnR5
TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDcgKzcwNiw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1
dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1zaXplX3Qg
U3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zm
c2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC03MjQsNyArNzE5LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcgogICAgIGlmICghcG9zaXRpb24uZmlyc3QpCiAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwb3NpdGlvbi5maXJz
dC0+b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5v
ZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92ZShwb3NpdGlvbik7CiAgICAgbV9w
cm9wZXJ0eVRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNldCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAgLTEw
MywzMiArMTAzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzRnJvemVuKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgICAgIGJvb2wgZGlkVHJhbnNpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQotICAgICAgICBib29sIHB1dFdpbGxHcm93
UHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGluZVN0b3Jh
Z2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKG91dE9m
TGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
dXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IGN1cnJlbnRTaXpl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gcHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJs
ZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFi
bGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
ID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5VGFibGUtPnNpemUoKSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAg
ICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXpl
KCkpOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHRvdGFs
U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKTsgCisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHko
KTsgCiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAg
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
dm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBA
IC0xNDksMTggKzE0OSw4NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hh
aW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgU3RydWN0
dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1
cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1f
cHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFu
c2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKIAotICAgICAgICB2b2lk
IGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAg
ICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBt
X3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAgICBzaXplX3QgaW5saW5lU3RvcmFnZUNhcGFj
aXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsK
LQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIHVuc2lnbmVkIG91dE9m
TGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX291
dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNp
emVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXpl
ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAg
ICAgaWYgKHRvdGFsU2l6ZSA8IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1i
ZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAg
ICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmluYWxPYmplY3QoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgIT0gRmlu
YWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpIC0g
aW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBvdXRPZkxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIGlmICht
X3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBt
X3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICAg
ICAgaWYgKHRvdGFsU2l6ZSA8IGlubGluZUNhcGFjaXR5KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lQ2FwYWNp
dHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVT
bG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGJvb2wgaGFz
SW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3R5
cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGU7CisgICAgICAgIH0KKyAgICAgICAgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBpbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwor
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0OworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlU
YWJsZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5
U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBtX29mZnNldCArIDE7CisgICAgICAgICAgICBpZiAocmVzdWx0ID4gaW5saW5lU3RvcmFnZUNh
cGFjaXR5KQorICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlu
bGluZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBp
bmxpbmVTaXplS25vd25GaW5hbE9iamVjdCgpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVk
IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX291dE9mTGluZUNhcGFjaXR5ICsgaW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUp
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmlu
ZyYgbmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KICAgICAg
ICAgYm9vbCBoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3Rv
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4
Y2x1ZGluZ1Byb3RvOyB9CkBAIC0xNzcsNyArMjQ1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIGJvb2wgaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBt
X2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzOyB9CiAgICAgICAgIAotICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUt
PmlzRW1wdHkoKSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CisgICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpOworICAgICAg
ICAgICAgcmV0dXJuICFpc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQogCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgZGlzYWJsZVNwZWNpZmlj
RnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhT
cGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KQEAgLTI3Myw4ICszNDYsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfSBEaWN0aW9uYXJ5S2luZDsKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBE
aWN0aW9uYXJ5S2luZCk7CiAKLSAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9i
YWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVydHlOYW1lKTsKIAogICAgICAgICB2b2lkIGNy
ZWF0ZVByb3BlcnR5TWFwKHVuc2lnbmVkIGtleUNvdW50ID0gMCk7CiAgICAgICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeSgpOwpAQCAtMzAxLDcgKzM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbnQgdHJhbnNpdGlvbkNvdW50KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gU2luY2UgdGhlIG51bWJlciBvZiB0cmFuc2l0aW9ucyBpcyBhbHdheXMgdGhlIHNhbWUgYXMg
bV9vZmZzZXQsIHdlIGtlZXAgdGhlIHNpemUgb2YgU3RydWN0dXJlIGRvd24gYnkgbm90IHN0b3Jp
bmcgYm90aC4KLSAgICAgICAgICAgIHJldHVybiBtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBt
X29mZnNldCArIDE7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZz
ZXQobV9vZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1ZhbGlkKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFpbikgY29uc3Q7CkBAIC0zMTAs
OCArMzgzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBz
X21heFRyYW5zaXRpb25MZW5ndGggPSA2NDsKIAotICAgICAgICBzdGF0aWMgY29uc3QgaW50IG5v
T2Zmc2V0ID0gLTE7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7CiAKICAgICAgICAgVHlwZUluZm8gbV90eXBlSW5mbzsK
QEAgLTMzNiwxMCArNDA3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
bXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CiAK
LSAgICAgICAgdWludDMyX3QgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgdWlu
dDMyX3QgbV9vdXRPZkxpbmVDYXBhY2l0eTsKIAogICAgICAgICAvLyBtX29mZnNldCBkb2VzIG5v
dCBhY2NvdW50IGZvciBhbm9ueW1vdXMgc2xvdHMKLSAgICAgICAgaW50IG1fb2Zmc2V0OworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIAogICAgICAgICB1bnNpZ25lZCBtX2RpY3Rp
b25hcnlLaW5kIDogMjsKICAgICAgICAgYm9vbCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZSA6IDE7
CkBAIC0zNTMsMjYgKzQyNCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQg
bV9zdGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAgICAgfTsKIAotICAgIGlubGluZSBzaXplX3QgU3Ry
dWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAg
ICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAg
IGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAg
ICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRy
eSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJz
dDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAg
ICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9
CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3Ry
dWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1l
KQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19p
bmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERh
dGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBu
b3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFBy
b3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kV2l0aFN0cmluZyhu
YW1lLmltcGwoKSkuZmlyc3Q7Ci0gICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQg
OiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFs
aWRPZmZzZXQ7CiAgICAgfQogICAgIAogICAgIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVj
dHVyZU9yVW5kZWZpbmVkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150351</attachid>
            <date>2012-07-01 18:24:42 -0700</date>
            <delta_ts>2012-07-02 01:03:02 -0700</delta_ts>
            <desc>a lot more code</desc>
            <filename>overflowstorage_patch_6.diff</filename>
            <type>text/plain</type>
            <size>176362</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNyBA
QAorMjAxMi0wNy0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhM
b2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhB
ZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6
CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6
cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRM
b2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAg
ICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29k
ZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3Bl
cnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAg
ICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJ
ZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNp
dGlvbik6CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0
aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2
LnJiOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpncm93T3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RM
b2NhdGlvbik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpo
YXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2VV
bnNhZmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNldEZv
ckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTTm9uRmlu
YWxPYmplY3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRPdXRPZkxp
bmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaXJzdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Omxhc3RPZmZzZXQpOgorICAgICAgICAoSlND
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpvZmZzZXRFbmQpOgorICAgICAgICAoSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Omlz
VmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjppbmRl
eEZvck9mZnNldCk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldEZv
ck9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBI
YXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVudHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFi
bGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNl
dC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc091
dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6Om9mZnNldEluSW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9m
ZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGlu
ZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAg
KEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlT
bG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoK
KyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zmc2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5
U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFj
aXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlu
bmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1v
dmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91
dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5s
aW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3Rh
bFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9m
ZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0
cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTIt
MDYtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVj
dCB3YXN0ZXMgdG9vIG11Y2ggbWVtb3J5IG9uIHVudXNlZCBwcm9wZXJ0eSBzbG90cwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NjIsNiArNTYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2Vt
Ymxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCisgICAg
eworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBMYWJl
bCBsYWJlbCgpCkBAIC02NzIsNiArNjc3LDE2IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAg
IHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0YUxvY2F0
aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQoQ29k
ZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZXBs
YWNlV2l0aExvYWQobGFiZWwuZGF0YUxvY2F0aW9uKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25MYWJlbCBs
YWJlbCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoQWRkcmVzc0Nv
bXB1dGF0aW9uKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiwy
NCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9saW5l
KHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkxhYmVsIGxh
YmVsKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZChsYWJl
bCk7CisgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
Q29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsLCBi
b29sIGlzQWN0aXZlKQorICAgIHsKKyAgICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAg
cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFj
ZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2
b2lkKiBtX3N0YXJ0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4
MzksNDIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgewor
ICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVj
dGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09
IFBSRV9SRVgpCisgICAgICAgICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpw
dHIpIHsKKyAgICAgICAgY2FzZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7Cisg
ICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0
aW9uU3RhcnQpOworI2lmIENQVShYODZfNjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0g
UFJFX1JFWCkKKyAgICAgICAgICAgIHB0cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0
cikgeworICAgICAgICBjYXNlIE9QX01PVl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xF
QTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxS
ZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
YWxsLmlzU2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAg
dm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291
dF9vZl9saW5lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoK
ICAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTQ5MSw3
ICs0OTQsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluCiAgICAg
ICAgIGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJn
ZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJl
KS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJl
Q2hhaW4pLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpKSB7
CisgICAgICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9wdXRfYnlfaWQpIHx8IHZQQ1swXS51LikgewogICAgICAgICBwcmludFN0cnVjdHVyZSgicHV0
X2J5X2lkIiwgdlBDLCA0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMzMsNiArMTAz
Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWRfc2VsZjoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX2NoYWluOgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2Zf
bGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTA3MSwxMCArMTA3OSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMs
IGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5l
OiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
OiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAg
ICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5l
cmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9u
KiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zW2ldXTsKICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRf
YnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
b3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5n
ZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlVW5saW5raW5nKQpAQCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
KQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJ
Z25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5n
ZXQoCiAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1
dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkK
KyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKFNpbXBsZSwgZmFsc2UsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNp
ZmljVmFsdWUpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3JDaGFpbihHZXRCCiAgICAgICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1
Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQs
IGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zm
c2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQp
KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5h
ZGQoc3RydWN0dXJlKTsKQEAgLTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwg
YXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYg
KHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQu
YWRkKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNW
YWx1ZShzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJl
c3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVz
dWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQu
c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTc5LDcgKzE3OSw3IEBAIEdldEJ5
SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHNpemVfdCBt
eU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9PSBub3RGb3VuZCkgewor
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkgewogICAgICAgICAgICAg
ICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQo
c3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgaWYg
KHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQo
cmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVT
ZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIzLDExICsyMjMsMTEgQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICAgICAg
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3Vu
ZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90
Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkgewogICAg
ICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAgICAgIHJlc3VsdC5tX3N0
cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFpbi5jbGVhcigpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEdldEJ5
SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZv
dW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICBHZXRCeUlkU3RhdHVz
KCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAgICAgICwgbV9vZmZzZXQo
bm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICB7CiAgICAg
fQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRlIHN0YXRlLCBib29sIHdh
c1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQgPSBTdHJ1Y3R1cmVT
ZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBKU1ZhbHVlIHNwZWNpZmlj
VmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1
Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxpZE9mZnNldCwgSlNWYWx1
ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4gY2hhaW4gPSBW
ZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAs
IG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX2NoYWluKGNoYWluKQpA
QCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIGNvbnN0IFZlY3Rv
cjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9IC8vIFJldHVy
bnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzLgogICAgIEpTVmFsdWUg
c3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZTsgfSAvLyBSZXR1
cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1ZS4KLSAgICBzaXplX3Qg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogICAgIGJvb2wgd2FzU2Vl
bkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAgICAKQEAgLTg4LDcg
Kzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAg
VmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7
Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAg
IGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8q
IGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhf
dGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dl
dF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAgIG1hY3JvKG9w
X2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAg
ICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5KSAvKiBoYXMgdmFsdWUg
cHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2NoYWluLCA5KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5KSAvKiBoYXMgdmFsdWUg
cHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAgICBpZiAoaW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0gICAgICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgaWYg
KGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZAorICAgICAgICB8
fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xp
bmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnBy
b2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOwog
ICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdAotICAgICAgICAg
ICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAgICAgICAgfHwgaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CiAgICAgCiAg
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5n
ZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOwogICAgIEFTU0VSVChj
aGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZv
dW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5n
ZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmICghaXNWYWxp
ZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9m
ZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vz
c19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8u
dS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0
cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwg
aWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLAogICAgICAgICAg
ICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGlu
dmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5w
cmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0
aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHVi
SW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnBy
b2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVRyYW5z
aXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2
aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1
dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAgICAgIG9mZnNldCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAs
IG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwg
MCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKLSAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxp
ZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMjE2MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5SWRTdGF0dXNfaAogI2Rl
ZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5j
bHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTUsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX25ld1N0
cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkKLSAgICAgICAgLCBtX29m
ZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgICAg
ICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAgIHNpemVfdCBvZmZzZXQp
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRl
KQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKICAgICAgICAgLCBtX25l
d1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Ns
b3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgIT0g
U2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKCht
X3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVyZUNoYWluKTsKLSAgICAg
ICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Ns
b3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAgICAgQVNTRVJUKChtX3N0
YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9v
ZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUHV0QnlJ
ZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0dXJlOyB9CiAgICAg
U3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1
cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOwpAQCAt
OTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwog
ICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlQ2hhaW4qIG1fc3Ry
dWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1f
b2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUds
b2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDkgQEAgc3RhdGljIFJl
c29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cgogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnRpZmllciwgYXR0
cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHJldHVybiBSZXNv
bHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMo
UmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxlLCBzdHJ1Y3R1cmUsIG9mZnNldCwgc3BlY2lmaWNW
YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1c19oCiAKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3dGYv
Tm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAgICAgICAgU3RhdGUgc3Rh
dGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLAor
ICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1ZhbHVlIHNwZWNpZmljVmFs
dWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0
cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVibGljOgogICAgIGJvb2wg
dGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aDsg
fQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1
Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0K
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQog
ICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1
ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlKiBtX3N0
cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBjbGFzcyBSZXNvbHZlR2xv
YmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE1ICsxMTMsNiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2luZ0lubGluZVByb3BlcnR5
U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
c3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZXNb
aV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKICAgICAvLyBD
YWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNldCBtdXN0IGNvbnNpc3Qg
b2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3RydWN0dXJlKiBzaW5nbGV0
b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAg
aW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBzY3JhdGNoR1BSOwogICAg
ICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAgICAgICAgICAgICAgIGlu
dDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRl
bHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxU
b1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDaGVja0ltbVRvQ2FsbDsK
QEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qgc3RydWN0dXJlVG9Db21w
YXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVDaGVjazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1l
bnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFi
ZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oYm9v
bCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICB2b2lkIGhhbmRs
ZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVk
VHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCi0gICAgICAg
IGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7CisgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBpbnQgZGVz
dGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAgIGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKQEAgLTE2
MzAsMTcgKzE2MzAsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRl
cgogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeU9mZnNldCgKICAgICBpbnQgZGVz
dGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlSW5kZXggYmFz
ZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBib29sIHVzZUlubGluZVN0b3JhZ2Us
IHNpemVfdCBvZmZzZXQpCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIE5vZGVJ
bmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgc2l6ZV90IG9mZnNldE9mZnNldDsKLSAgICBpZiAo
dXNlSW5saW5lU3RvcmFnZSkgeworICAgIHNpemVfdCBhY3R1YWxPZmZzZXQ7CisgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsK
ICAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpKTsKLSAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSk7CisgICAgICAgIGFjdHVhbE9mZnNldCA9IHNpemVvZihKU09iamVjdCkg
LyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQ
cm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOworICAgICAg
ICBhY3R1YWxPZmZzZXQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KQogICAgIH0K
ICAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAogICAgICAgICBhZGRUb0dyYXBoKApAQCAtMTY0
OCw3ICsxNjQ4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQoCiAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vz
c0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0g
b2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGFj
dHVhbE9mZnNldDsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRl
bnRpZmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0
b3JhZ2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Nyw2IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChD
aGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0
dXMuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9y
YWdlOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAg
ICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNl
dCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVj
dCA9IDA7CkBAIC0xNjg2LDkgKzE2ODUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hh
aW4oKVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2so
Y3VycmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNl
SW5saW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0
cnVjdHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQog
ICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhh
dCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwg
d2UncmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE3MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAg
ICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsK
KyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMjU5LDIwICsyMjU1LDIwIEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpKSB7
CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7
Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAgICBz
aXplX3QgYWN0dWFsT2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0
b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQocHV0QnlJZC5vZmZzZXQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYmFzZTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2Jq
ZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFjdHVhbE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHB1dEJ5SWQub2Zmc2V0
KCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYWN0
dWFsT2Zmc2V0ID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHB1dEJ5SWQub2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0
LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIHByb3BlcnR5U3Rv
cmFnZSwgYmFzZSwgdmFsdWUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0
b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3Jh
Z2VBY2Nlc3NEYXRhLm9mZnNldCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gYWN0dWFsT2Zm
c2V0OwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIg
PSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNj
ZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNlIGlm
ICghaGFzRXhpdFNpdGUKQEAgLTIzMDgsMTUgKzIzMDQsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNl
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0
OworICAgICAgICAgICAgICAgIHNpemVfdCBhY3R1YWxPZmZzZXQ7CiAgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0
YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChpc0lubGluZU9mZnNldChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkgewogICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkp
OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8g
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsT2Zmc2V0
ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXRJbklu
bGluZVN0b3JhZ2UocHV0QnlJZC5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9w
ZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAw
OworICAgICAgICAgICAgICAgICAgICBhY3R1YWxPZmZzZXQgPSBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2UocHV0QnlJZC5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LApAQCAtMjMy
Niw3ICsyMzIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAg
ICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9m
ZnNldE9mZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBh
Y3R1YWxPZmZzZXQ7CiAgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmll
ck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0
b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtMjczOCw4ICsyNzM0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1
cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNl
ZCBnbG9iYWwgcmVzb2x2ZSBpbmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiAr
MTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogI2VuZGlm
CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
bV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAg
ICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0
eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmJhc2VHUFIgPSBtX3Byb3Bl
cnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nl
c3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIHByb3BlcnlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbENvbXBhY3QgbG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBz
bG93UGF0aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCkBA
IC0xNDgsNiArMTQ5LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVs
UHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
c3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ5U3Rv
cmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xv
YWRPclN0b3JlLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBwYXls
b2FkTG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVy
YXRvciwKQEAgLTE2MSw2ICsxNjMsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewog
ICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICAsIG1fc3RydWN0dXJl
SW1tKHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNo
ZWNrKQorICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2Fk
KQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICwgbV9sb2FkT3JTdG9yZShsb2FkT3JTdG9y
ZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xODIsNiArMTg1LDcgQEAgc3RydWN0IFBy
b3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJlQ2hlY2s7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIG1fcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IG1fbG9hZE9yU3RvcmU7CiAjZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0
Y2guY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lk
IGRmZ1JlcGF0Y2hDYWxsKENvZGVCbG9jayogY28KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhj
YWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlk
U2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG9mZnNldCwgY29uc3QgRnVuY3Rpb25Q
dHIgJnNsb3dQYXRoRnVuY3Rpb24sIGJvb2wgY29tcGFjdCkKK3N0YXRpYyB2b2lkIGRmZ1JlcGF0
Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBj
b25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQogewogICAg
IFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01MiwxOCArNTIs
MTkgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZAogCiAgICAgLy8g
UGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1t
VG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvU3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGlmIChjb21wYWN0KQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVl
KSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRp
dmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkpOwogICAgIGVsc2UKLSAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpT
VmFsdWUpICogb2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRp
dmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICBpZiAoY29tcGFjdCkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2Fk
T3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9IGVsc2UgewotICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUp
LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8u
cGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUp
ICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAq
IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfQogI2VuZGlm
CiB9CkBAIC0xMDUsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgbGlua1Jlc3RvcmVTY3JhdGNoKExp
bmtCdWZmZQogICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9y
ZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9u
ZSksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbmVyYXRl
UHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBzaXplX3Qgb2Zm
c2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVs
LCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYm
IHN0dWJSb3V0aW5lKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBzaXplX3QgY291bnQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9u
TGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkK
IHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwog
CkBAIC0xMzksMTMgKzE0MCwyMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViCiAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBpdC0+Z2V0KCk7CiAgICAgfQogICAgIAot
ICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdl
KCksIHJlc3VsdEdQUik7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0
ZUFkZHJlc3MocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCByZXN1bHRH
UFIpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKLSAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSksIHJl
c3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKICNlbmRpZgorICAgIH0gZWxz
ZSB7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+YWRkcmVzc09mT3V0T2ZM
aW5ldG9yYWdlKCksIHJlc3VsdEdQUik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5P
dXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSks
IHJlc3VsdEdQUik7CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdH
UFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgIH0KIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3MsIGZhaWw7CiAgICAgCkBAIC01NjcsNyArNTc4LDcgQEAg
c3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3JvQXNzZW1ibGVy
IHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAo
d3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkp
KSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJyaWVy
TmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAg
ICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQ
UiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAgICAg
ICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNTk3LDIwIEBAIHN0YXRp
YyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAg
c3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQo
KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hl
ZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7Cisg
ICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAg
ICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5s
aW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIp
OwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwor
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNlbmRp
ZgogICAgIApAQCAtNjg1LDIwICs2OTYsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRp
b25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3RydWN0
dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZh
bHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
KSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAg
ICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNl
IHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0g
ICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGlm
IChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQu
c3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzdEluT3V0
T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsK
KyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDUsNiArNTA1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0x
KSkpOwogICAgIAorICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0g
bV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxh
YmVsQ29tcGFjdCB0YWdMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRy
ZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0
VGFnR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBwYXlsb2FkTG9hZFdp
dGhQYXRjaCA9IG1faml0LmxvYWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAg
LTU0Nyw3ICs1NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVP
CiAgICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFj
Y2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwg
c3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgdGFn
TG9hZFdpdGhQYXRjaCwgcGF5bG9hZExvYWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLCBkb25l
TGFiZWwsCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwgc2Fm
ZUNhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90
PihyZXN1bHRQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSwKQEAgLTU2
Miw2ICs1NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAK
ICAgICB3cml0ZUJhcnJpZXIoYmFzZVBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVVzZSwg
V3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCisgICAgSklUQ29t
cGlsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0
Y2hwb2ludHMoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQ
YXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiB0YWdTdG9yZVdpdGhQYXRjaCA9IG1f
aml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlVGFnR1BSLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgcGF5bG9h
ZFN0b3JlV2l0aFBhdGNoID0gbV9qaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFs
dWVQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CkBAIC01OTQs
NyArNTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAg
IH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NS
ZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBz
dHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWxDb21wYWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNo
LmxhYmVsKCkpLAogICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNh
c3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksCkBAIC0zNTQzLDcgKzM1NDUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwor
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAog
ICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDYg
KzQ5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICBK
SVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21w
aWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkp
OwogICAgIAorICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9q
aXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHJlc3VsdEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZFdp
dGhQYXRjaCA9IG1faml0LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIpOwogICAgIApAQCAtNTE0
LDggKzUxNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAg
ICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNz
UmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgbG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksCi0gICAgICAgICAgICBk
b25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVz
dWx0R1BSKSwKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gsCisgICAgICAg
ICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4
X3Q+KHNjcmF0Y2hHUFIpLAogICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxsID8g
UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlBY2Nlc3NSZWNv
cmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aC5yZWxlYXNlKCkpOwpAQCAtNTMzLDYgKzUzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwg
dmFsdWVVc2UsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNoR1BSKTsKIAor
ICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQubGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0
Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1f
aml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCkBAIC01NjMsNyArNTY1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAg
ICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1faml0LmFk
ZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0
KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZl
Q2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNh
c3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAor
ICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5s
YWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNhZmVDYXN0
PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxp
bnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgu
cmVsZWFzZSgpKTsKIH0KIApAQCAtMzU2Nyw3ICszNTczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAot
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3Rv
cmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzMyw3ICszMzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChjZWxsKSkgewot
ICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwp
LCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9j
YXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiAr
MjU1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfY3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
YnlfdmFsKQpAQCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9z
Y29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lk
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbCkKQEAgLTUzNyw2ICs1NDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJv
cGVydHlTdHViQ29tcGlsYXRpCiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdp
bkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAg
IGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGdldFN0cnVjdHVyZVRvQ29tcGFyZSkpOwogICAgICAgICBpbmZv
LnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZUNoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGdldFN0cnVjdHVyZUNoZWNrKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZWxp
bmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
Zihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaW5m
by5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCA9IE1hY3JvQXNzZW1ibGVy
OjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vsc2UKQEAgLTU1MCw2ICs1
NTUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgY2Fz
ZSBQdXRCeUlkOgogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQYXRoQmVnaW5Mb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4pOwogICAgICAgICBpbmZvLnBh
dGNoLmJhc2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSA9IE1hY3JvQXNzZW1ibGVyOjpk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihwdXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5i
YXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW47
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgZ2V0U3RydWN0dXJlVG9Db21w
YXJlOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBnZXRTdHJ1Y3R1cmVD
aGVjazsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQ7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENv
bXBhY3QgZ2V0RGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpAQCAtMTg1LDE3ICsxODYsMjQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogCi0gICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0
aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbygKKyAgICAgICAgICAgIFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJl
LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hl
Y2ssCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9h
ZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1w
IHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFj
ZW1lbnRMYWJlbCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLAogI2Vs
c2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9D
b21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywgTWFj
cm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDIsIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDIsCiAjZW5kaWYKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCiAgICAgICAgICAgICA6IG1fdHlw
ZShHZXRCeUlkKQogICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAg
ICAgICAgICAgICAsIGhvdFBhdGhCZWdpbihob3RQYXRoQmVnaW4pCiAgICAgICAgICAgICAsIGdl
dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUpCiAgICAgICAgICAgICAsIGdl
dFN0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNrKQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0
b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgICwgZ2V0RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxhY2VtZW50TGFiZWwpCiAjZWxzZQpA
QCAtMjA2LDE2ICsyMTQsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRC
eUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQ
YXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbygKKyAgICAgICAg
ICAgIFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJl
LCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwpCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwKICNlbHNl
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29t
cGFyZSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwgTWFj
cm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMikKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDEsCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyCiAjZW5k
aWYKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIDogbV90eXBlKFB1dEJ5SWQpCiAgICAgICAg
ICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0
aEJlZ2luKGhvdFBhdGhCZWdpbikKICAgICAgICAgICAgICwgcHV0U3RydWN0dXJlVG9Db21wYXJl
KHN0cnVjdHVyZVRvQ29tcGFyZSkKKyAgICAgICAgICAgICwgcHJvcGVydHlTdG9yYWdlTG9hZChw
cm9wZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAsIHB1
dERpc3BsYWNlbWVudExhYmVsKGRpc3BsYWNlbWVudExhYmVsKQogI2Vsc2UKQEAgLTI5NSw0MCAr
MzA5LDQwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIEpJVChnbG9iYWxE
YXRhLCBjb2RlQmxvY2spLnByaXZhdGVDb21waWxlKGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBl
ZmZvcnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQ
cm90byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZUdldEJ5SWRQcm90byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAg
ICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAg
ICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4Owog
ICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKHN0dWJJbmZvLCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgcmV0
dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRl
eCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAg
ICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChzdHViSW5mbywgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzLCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3Qs
IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwg
aW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5
dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQu
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1
cmVMaXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVu
dCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9Ci0gICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90
eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIGNoYWluLCBjb3VudCwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1l
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW4o
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNv
bXBpbGVHZXRCeUlkQ2hhaW4oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2sp
OwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihzdHViSW5m
bywgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJl
dHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MsIGJvb2wgZGlyZWN0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVC
bG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRl
Y29kZUluZGV4OwpAQCAtMzU4LDggKzM3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVT
dHViSW5mbyopOwogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoUHV0QnlJZChSZXBhdGNo
QnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hH
ZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpOwotICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayog
Y29kZWJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogICAgICAgICBzdGF0aWMgdm9pZCBw
YXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqIGNvZGVibG9jaywg
TWV0aG9kQ2FsbExpbmtJbmZvJiwgU3RydWN0dXJlU3R1YkluZm8mLCBKU09iamVjdCosIFN0cnVj
dHVyZSosIEpTT2JqZWN0KiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAt
Mzc3LDEyICszOTEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVMaW5rUGFzcygpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7
CiAgICAgICAgIEpJVENvZGUgcHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFy
aXR5Q2hlY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7
CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpb24oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlPiBwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhKU0ds
b2JhbERhdGEqLCBUcmFtcG9saW5lU3RydWN0dXJlKik7CiAgICAgICAgIExhYmVsIHByaXZhdGVD
b21waWxlQ1RJTmF0aXZlQ2FsbChKU0dsb2JhbERhdGEqLCBib29sIGlzQ29uc3RydWN0ID0gZmFs
c2UpOwpAQCAtNDY4LDEwICs0ODIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNs
b3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sg
PSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNp
emVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
SlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBh
eWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJ
RCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2
b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lz
dGVySUQgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQs
IHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVl
UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAogICAgICAgICAvLyBBcml0
aG1ldGljIG9wY29kZSBoZWxwZXJzCiAgICAgICAgIHZvaWQgZW1pdEFkZDMyQ29uc3RhbnQodW5z
aWduZWQgZHN0LCB1bnNpZ25lZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0VHlwZSBvcFR5
cGUpOwpAQCAtNTQ3LDEwICs1NjEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKik7CiAgICAg
ICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VW
UmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09i
amVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQg
b2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVk
T2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw4IEBAIHZvaWQgSklUOjpjb21waWxl
R2V0QnlJZEhvdFBhdGgoKQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAg
ICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAg
ICBMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJl
bDEgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwg
cGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFM
YWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVz
c09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCBy
ZWdUMSk7IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxl
R2V0QnlJZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNl
cXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9u
SW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5
SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBz
dHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1
dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2Rl
T2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ss
IHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFi
ZWwyLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV9pZChJbnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3Rl
ZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0
dXJlKSkpKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QxKTsKICAg
ICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDEgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zm
c2V0UGF0Y2gocmVnVDIsIEFkZHJlc3MocmVnVDEsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQp
KTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMiA9IHN0b3Jl
UHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMywgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRC
eUlkRGVmYXVsdE9mZnNldCkpOyAvLyB0YWcKICAgICAKQEAgLTQwNyw3ICs0MDksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAKICAgICBlbWl0V3JpdGVCYXJy
aWVyKHJlZ1QwLCByZWdUMiwgcmVnVDEsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBX
cml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29t
cGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyKSk7CisgICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdp
biwgc3RydWN0dXJlVG9Db21wYXJlLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRM
YWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC05NzksOSArOTgxLDE0IEBAIHZvaWQgSklUOjpj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGUKIHsKICAgICBBU1NFUlQoc2l6ZW9mKEpTVmFs
dWUpID09IDgpOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGJh
c2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFzZSwg
b2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSksIHJlc3VsdFRhZyk7CisgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBv
ZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFz
ZSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgIGlzSW5saW5lLmxpbmsodGhpcyk7Cisg
ICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2Up
OworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZz
ZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2Fk
KSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1
bHRQYXlsb2FkKTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWln
aHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpIC0gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFRhZyk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTQgKzM3MywxNSBA
QCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlCiAgICAgUGF0Y2hhYmxl
SnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRv
Q29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5
SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAgIGFkZFNsb3dDYXNlKHN0cnVjdHVyZUNoZWNrKTsK
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCByZWdUMCk7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERhdGFMYWJlbENv
bXBhY3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0
UGF0Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsK
IAogICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NF
UVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0Nv
bXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5
U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9D
b21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3VsdCkpOwor
ICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQ
YXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3Rv
cmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0ICs0NDEsMTUg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBh
dGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAg
ICBMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwgPSBz
dG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDEsIEFkZHJlc3MocmVnVDIsIHBhdGNo
UHV0QnlJZERlZmF1bHRPZmZzZXQpKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNF
KHNlcXVlbmNlUHV0QnlJZCk7CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwg
cmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JQcm9w
ZXJ0eUFjY2Vzcyk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVu
ZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRl
Y29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIGRpc3BsYWNlbWVu
dExhYmVsKSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJv
cGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVP
ZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkLCBkaXNwbGFjZW1lbnRMYWJlbCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAog
ICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAg
ICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAg
ICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90
LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIApAQCAtOTUyLDcgKzk1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBj
aGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwy
OCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAg
ICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwog
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3Bl
cmFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwpOworICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hl
ZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE1MTIsOCArMTUzMyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfcG5hbWUKICAgICAKICAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5h
bWVJdGVyYXRvcik7CiAgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOwotICAgIExMSU5UX09Q
KDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7Ci0gICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6
d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIExMSU5UX09QKDMp
ID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Zmlyc3RPZmZzZXQo
KSk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLT5vZmZzZXRFbmQoKSk7CiAgICAgCiAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9n
ZXRfcG5hbWVzKTsKICAgICBMTElOVF9FTkQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtOTE5LDYgKzkxOSwxNyBAQCBfbGxp
bnRfb3BfaXNfc3RyaW5nOgogICAgIGRpc3BhdGNoKDMpCiAKIAorbWFjcm8gbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBw
YXlsb2FkKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwg
LmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RB
bmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5pc0lubGluZToK
KyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VD
YXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2FkaSBUYWdPZmZz
ZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5
T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2Fk
CitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMg
YXJlIGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4K
QEAgLTkzMCw5ICs5NDEsNyBAQCBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCiAgICAgYnBuZXEgdDEsIDEyW1BDXSwg
c2xvdwogICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0
eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgotICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMDk2LDU4IEBAIF9sbGludF9vcF9wdXRfZ2xv
YmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6
CisjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5k
IHdlIGRvIG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZv
ciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisjIHBpbmctcG9u
Z2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxs
IGNvbnRpbnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0
IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBk
b2luZyBhbnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNh
Y2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdl
IGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZh
aWxzLCBzaW5jZQotICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1
Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKLSAgICAjIHRvIHRha2UgZmFzdCBw
YXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBp
cyB3aGF0Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRp
IDhbUENdLCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpIDIw
W1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAot
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAg
ICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAg
ICBsb2FkaSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCi0gICAgZGlz
cGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0
MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAg
ICAgICAgIGxvYWRpIDRbUENdLCB0MQorICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgICAgICAgICB2
YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAg
ICAgICAgCisgICAgICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAg
ICAgICAgZW5kKQorZW5kCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQorbWFjcm8gd2l0aElubGlu
ZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICAjIElu
ZGljYXRlIHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQg
dGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICBjb250
aW51YXRpb24ob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFjcm8gd2l0aE91dE9m
TGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBs
b2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5U3RvcmFn
ZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVyIG5vdyBw
b2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgb2JqZWN0
IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRlciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFnZSwgb2Jq
ZWN0KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3aXRoSW5saW5l
U3RvcmFnZSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdldEJ5
SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVu
Z3RoOgpAQCAtMTEzMCw2OCArMTE2Niw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0
QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRp
IDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEy
W1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0Mwot
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAg
ICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQw
LCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0
W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRpc3Bh
dGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMs
CisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAg
ICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwg
dDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFn
ZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9y
YWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAogCiAu
b3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlf
aWQpCiAgICAgZGlzcGF0Y2goOSkKIAorX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBwdXRCeUlk
KHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6
CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAotbWFjcm8gcHV0QnlJZFRyYW5z
aXRpb24oYWRkaXRpb25hbENoZWNrcykKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRp
b25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBs
b2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAu
b3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xv
dykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQxCi0g
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQx
LCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAgd3Jp
dGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBsb2Fk
aSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0b3Jl
cCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFBy
b3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAo
cHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlT
dG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQx
LCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICAg
ICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3JlcCB0
MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAg
ICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBz
Y3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcg
dGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAyOFtQ
Q10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQp
CisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisg
ICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtz
Y3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5lcSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcs
IC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gs
IHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdp
dGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tz
LCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xkU3Ry
dWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xk
U3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBw
cm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAgICAg
ICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAg
ICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAg
ICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAg
ICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJl
XSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0Nl
bGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xk
U3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xv
dwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29w
Ci0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3Ry
dWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzI1LDcgQEAgX2xsaW50X29wX2dldF9ieV9w
bmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIGJp
YWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwg
Lm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQwLCB0MiwgdDEsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGEKICMg
U3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CiAKKyMgUHJvcGVy
dHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFMVUU2NAorICAgIGNvbnN0IElubGluZVN0b3Jh
Z2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA2
CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50cwogaWYgSlNWQUxVRTY0CiAgICAgY29uc3Qg
SlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDEx
IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFk
ZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBp
ZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3Ry
dWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19h
PyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQp
fSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAg
ICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0
cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAj
e3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMjQgKzkz
LDU0IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKICAgICBib29s
IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
ID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7Cisg
ICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpOworICAgICAgICAvLyBXZSBoYXZlIHRo
aXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9m
IHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KKyAgICAgICAgdm9p
ZCogdGVtcCA9IHN0b3JhZ2U7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwg
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOwor
ICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKKyAg
ICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdl
QmFycmllcjo6VW5jaGVja2VkKTsKKyAgICB9CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmhl
cml0b3JJRCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9y
SUQpOworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
OworI2VuZGlmCit9CiAKLSAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Cit2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0ZpbmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29s
IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlz
aXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKIAotICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
ID0gdGhpc09iamVjdC0+cHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXpl
ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBp
ZiAodGhpc09iamVjdC0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwotICAgIGVsc2UgeworICAgIFByb3Bl
cnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAg
IGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOwogICAgICAg
ICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBm
b3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVy
cy4KICAgICAgICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFu
ZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNs
b3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAs
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsK
ICAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0g
ICAgICAgIHRoaXNPYmplY3QtPm1fcHJvcGVydHlTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdl
QmFycmllcjo6VW5jaGVja2VkKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9y
YWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAg
ICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwogCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoaW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7
CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAj
ZW5kaWYKQEAgLTE1Myw4ICsxODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhCiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBh
c09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTUxOSwxNyAr
NTQ5LDE3IEBAIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEKICAgICBp
ZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90
Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52
YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkp
OwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERp
cmVjdE9mZnNldChvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1ICs1ODksMjIg
QEAgU3RydWN0dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAgIHJldHVybiBt
X2luaGVyaXRvcklELmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dQ
cm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVT
dG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBu
ZXdTaXplKQogewogICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICAvLyBJdCdz
IGltcG9ydGFudCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIHNp
bmNlCiAgICAgLy8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zaXRpb24uCiAK
LSAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3Jh
Z2UuZ2V0KCk7CisgICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fb3V0
T2ZMaW5lU3RvcmFnZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9y
YWdlID0gMDsKIAotICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgaWYgKCFv
bGRQcm9wZXJ0eVN0b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAg
aGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVy
ZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBuZXdQ
cm9wZXJ0eVN0b3JhZ2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRyeUFsbG9jYXRl
U3RvcmFnZShzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdTaXplLCAmdGVt
cCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBz
dGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9wZXJ0eVN0b3Jh
Z2VbaV0gPSBvbGRQcm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
V2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRo
ZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAg
ICAgICAgIHZvaWQqIHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQsOCArNjIxLDgg
QEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9m
ZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZv
dW5kKQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7Cisg
ICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNl
dCksIGF0dHJpYnV0ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNCAr
NzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAg
Ly8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgfTsKIAotI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDYKLSNl
bHNlCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKLSNlbmRp
ZgotCi1DT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
Pj0gMCksIGZpbmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsKLQogICAgIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE2OSwyNiArMTYxLDcy
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgLy8g
VGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgICAg
ICBKU1ZhbHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zm
c2V0KSA6IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdE9mZnNldChv
ZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVj
a09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpIDogMDsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHJldHVy
biBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAw
OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyBy
ZXR1cm4gc3RydWN0dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKTsgfQorICAgICAgICBDb25zdFBy
b3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxDb25zdFByb3BlcnR5U3RvcmFnZT4odGhpcyAr
IDEpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5z
YWZlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0
eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBDb25zdFByb3BlcnR5U3Rv
cmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVu
c2FmZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdl
KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdl
dCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAg
ICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRp
b24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIC0gcHJvcGVy
dHlTdG9yYWdlKCk7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBs
b2NhdGlvbikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVz
dWx0OworICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZSA9IGxvY2F0aW9u
IC0gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldEluSW5saW5l
U3RvcmFnZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRpb24gLSBvdXRPZkxpbmVTdG9y
YWdlKCk7CisgICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChyZXN1bHQsIHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CkBAIC0yMDUsOSArMjQzLDkgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3Qg
YWNjZXNzIHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGly
ZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQotICAgICAg
ICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQorICAgICAgICBKU1ZhbHVlIGdl
dERpcmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGxvY2Fs
Rm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9CisgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVl
IHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldChnbG9iYWxEYXRhLCB0aGlz
LCB2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZp
bmVkKCk7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKQEAgLTIyOCwyNCArMjY2LDE2IEBAIENP
TVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBzdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPnN0YXRpY0Z1bmN0aW9u
c1JlaWZpZWQoKTsgfQogICAgICAgICB2b2lkIHJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRl
KEV4ZWNTdGF0ZSogZXhlYyk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlT
dG9yYWdlIGdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUs
IHNpemVfdCBuZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0KLSAgICAgICAgICAgICAg
ICAhbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkKLSAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNv
bnN0IHZvaWQqPih0aGlzICsgMSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IHN0cnVj
dHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgUHJvcGVydHlTdG9yYWdlIGdyb3dPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYs
IHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIHZvaWQgc2V0T3V0T2ZM
aW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2UsIFN0cnVjdHVyZSopOwog
ICAgICAgICAKICAgICAgICAgYm9vbCByZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xv
YmFsRGF0YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9p
ZCBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0
YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSopOwogCi0gICAgICAgIHZvaWQqIGFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpCisg
ICAgICAgIHZvaWQqIGFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gJm1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICAgICAgcmV0dXJuICZt
X291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0
aW9uYXJ5T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTI2MSw3ICsyOTEsNyBA
QCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7Ci0g
ICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKTsKICAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZkluaGVyaXRvcklEKCk7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9S
VERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTI4Nyw3ICszMTcsNyBAQCBDT01QSUxF
X0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAKICAgICAgICAgLy8gVG8gaW5zdGFu
dGlhdGUgb2JqZWN0cyB5b3UgbGlrZWx5IHdhbnQgSlNGaW5hbE9iamVjdCwgYmVsb3cuCiAgICAg
ICAgIC8vIFRvIGNyZWF0ZSBkZXJpdmVkIHR5cGVzIHlvdSBsaWtlbHkgd2FudCBKU05vbkZpbmFs
T2JqZWN0LCBiZWxvdy4KLSAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOworICAgICAgICBKU09iamVjdChKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzZXRJbmhl
cml0b3JJRCgpCiAgICAgICAgIHsKQEAgLTMwNSwxOSArMzM1LDYgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAg
ICAgIHZvaWQgaXNTdHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9y
YWdlIHByb3BlcnR5U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpOyB9Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVy
biBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQotCi0gICAgICAgIGNvbnN0IFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsK
LSAgICAgICAgfQotCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9u
Rm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAm
cHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAgfQotCiAgICAgICAgIHRlbXBsYXRl
PFB1dE1vZGU+CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBK
U0NlbGwqKTsKIApAQCAtMzI3LDcgKzM0NCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2Jq
ZWN0X2lubGluZVN0b3IKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNo
RW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJl
KiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBTdG9yYWdlQmFy
cmllciBtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9vdXRPZkxp
bmVTdG9yYWdlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2luaGVyaXRvcklE
OwogICAgIH07CiAKQEAgLTM1MywxNCArMzcwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3IKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNO
b25GaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIDApCisg
ICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgewog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEpOwotICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVy
ZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0lu
Zm8oKSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzgxLDYgKzM5OCw4IEBAIENPTVBJTEVfQVNT
RVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
RmluYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5saW5lU3RvcmFn
ZSgpCkBAIC0zODgsMTEgKzQwNywxNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIHByb3Rl
Y3RlZDoKKyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuQ29tbW9uKFNsb3RWaXNpdG9yJik7Cisg
ICAgICAgIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVj
dCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7Ci0gICAgICAgICAgICBBU1NF
UlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNGaW5h
bE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKHRoaXMt
PnN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSk7
CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VSVChjbGFz
c0luZm8oKSk7CiAgICAgICAgIH0KIApAQCAtNDAwLDEzICs0MjIsMTMgQEAgQ09NUElMRV9BU1NF
UlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAg
ICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkK
KyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7
CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiBtX2lubGluZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2Fw
YWNpdHldOworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFn
ZVtJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWV07CiAgICAgfTsKIAogaW5saW5lIEpTRmluYWxPYmpl
Y3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtNDMxLDkgKzQ1Myw5IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3QKICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1f
aW5saW5lU3RvcmFnZSk7CiB9CiAKLWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mUHJv
cGVydHlTdG9yYWdlKCkKK2lubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5l
U3RvcmFnZSgpCiB7Ci0gICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9w
ZXJ0eVN0b3JhZ2UpOworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fb3V0
T2ZMaW5lU3RvcmFnZSk7CiB9CiAKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5o
ZXJpdG9ySUQoKQpAQCAtNDcxLDE0ICs0OTMsMTggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
R2xvYmFsVGhpcygpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gR2xvYmFsVGhpc1R5cGU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm9w
ZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2Ugc3Rv
cmFnZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0T3V0
T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBz
dG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZSk7CiAg
ICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkKLSAgICAgICAgICAgfHwgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0
OjpzX2luZm8gJiYgc3RhdGljX2Nhc3Q8dm9pZCo+KHN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZv
aWQqPih0aGlzICsgMSkpKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgQVNTRVJUKCFz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVy
ZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0
T2ZMaW5lU2l6ZSgpKTsKKyAgICB9CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVj
dHVyZSk7Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0b3Jh
Z2UpOworICAgIG1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFn
ZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxNiw5ICs1NDIsOSBAQCBpbmxpbmUg
SlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2JqZWN0KHZh
bHVlLmFzQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSkKK2lubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCBpbmxp
bmVTdG9yYWdlKQorICAgICwgbV9vdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIDAp
CiB7CiB9CiAKQEAgLTU0MiwxOSArNTY4LDYgQEAgaW5saW5lIFN0cnVjdHVyZSogSlNPYmplY3Q6
OmluaGVyaXRvcklEKAogICAgIHJldHVybiBjcmVhdGVJbmhlcml0b3JJRChnbG9iYWxEYXRhKTsK
IH0KIAotaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNv
bnN0Ci17Ci0gICAgaWYgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCi0g
ICAgICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjppc1VzaW5nSW5saW5lU3RvcmFn
ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpOwotfQotCiBpbmxpbmUgYm9vbCBKU0NlbGw6
OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKIHsKICAgICByZXR1cm4gY2xh
c3NJbmZvKCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKQEAgLTYxMSwxMCArNjI0LDEwIEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJp
bmcmIG5hbWUpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2go
KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgp
CiAgICAgICAgICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVu
dGlmaWVyKGV4ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3Vu
ZCkKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0
dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsKICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4ICs2ODksOCBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0Rp
Y3Rpb25hcnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAg
ICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0
cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBpZiAob2Zmc2V0ICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMg
ZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3Ig
dGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAg
aWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKSkKQEAgLTcwMCwxMyArNzEzLDE0IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAg
ICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkpCi0gICAg
ICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3Rl
ZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdy
b3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVu
Y3Rpb24pOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFn
ZSwgc3RydWN0dXJlKCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEs
IG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3Ry
dWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlKCktPnRvdGFs
U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
b2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5
IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTcxNCwxNSAr
NzI4LDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldDsKLSAgICBzaXplX3Qg
Y3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkg
PSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNGdW5jdGlvbiwgb2Zmc2V0KSkgewotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFn
ZSA9IHByb3BlcnR5U3RvcmFnZSgpOyAKLSAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBz
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBuZXdTdG9y
YWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0KLSAgICAgICAgQVNTRVJUKG9m
ZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIHNl
dFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsgCisg
ICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2Jh
bERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsK
KworICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgc2V0T3V0T2ZM
aW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBw
dXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRo
aXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFy
ZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBp
biBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc0OSw3IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRl
czsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRl
cywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAo
KG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Myw4IEBAIGlubGluZSBib29s
IEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3Ry
dWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zm
c2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChv
ZmZzZXQgPCBzdHJ1Y3R1cmUtPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHNldFN0cnVj
dHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KTsKIAogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAg
LTc4MSwyMiArNzk3LDIyIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bCgKIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBvbGRDYXBh
Y2l0eSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKG9sZENhcGFjaXR5
IDw9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJU
KG9sZENhcGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAg
Ci0gICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSkgeworICAgIGlmIChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpIHsKICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVj
dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUHJvcGVydHlTdG9yYWdl
IG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKAotICAgICAgICBnbG9iYWxEYXRhLCBv
bGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAg
ICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJl
KTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdl
KAorICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0
b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1
Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVh
bGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIGds
b2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUp
OwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtODI0LDExICs4NDAsMTEgQEAgaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYg
QWNjZXNzb3IpKTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3Rv
cmFnZSgpOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
KSkKLSAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdn
ZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAgc2V0UHJv
cGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKKyAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAo
c3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdT
dG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9y
YWdlU2l6ZSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFn
ZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTIyLDYgQEAg
aW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2VsbCgpLT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6
ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYgKzkzNiwx
NyBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAgcmV0dXJu
IHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91
IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoKKy8vIEZv
ciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBv
aW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1v
Zi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSAr
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU09iamVjdF9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDkgKzM3LDkgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Byb3BlcnR5TmFtZQogCiBj
b25zdCBDbGFzc0luZm8gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcikgfTsKIAotaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEq
IHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3RzKQoraW5saW5l
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgUHJv
cGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KQogICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdl
dCgpKQotICAgICwgbV9udW1DYWNoZWFibGVTbG90cyhudW1DYWNoZWFibGVTbG90cykKKyAgICAs
IG1fbGFzdFZhbGlkT2Zmc2V0KGxhc3RWYWxpZE9mZnNldCkKICAgICAsIG1fanNTdHJpbmdzU2l6
ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKSkKICAg
ICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltt
X2pzU3RyaW5nc1NpemVdKSkKIHsKQEAgLTUzLDEyICs1MywxMiBAQCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
eU5hbWVzKGV4ZWMpOwogICAgIG8tPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobywg
ZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgc2l6
ZV90IG51bUNhY2hlYWJsZVNsb3RzID0gMDsKKyAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRP
ZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVu
dW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCkt
PnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5z
dHJ1Y3R1cmUoKS0+bGFzdFZhbGlkT2Zmc2V0KCk7CiAgICAgCi0gICAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7
CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgp
LCBsYXN0VmFsaWRPZmZzZXQpOwogICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6ZGVzdHJveShKU0MKICAgICBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKj4oY2VsbCktPkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6On5KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKCk7CiB9CiAKLUpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQorSlNWYWx1ZSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQogewogICAgIEpTVmFsdWUgaWRlbnRpZmllciA9IG1fanNTdHJpbmdz
W2ldLmdldCgpOwogICAgIGlmIChtX2NhY2hlZFN0cnVjdHVyZS5nZXQoKSA9PSBiYXNlLT5zdHJ1
Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpID09IGJhc2UtPnN0cnVjdHVy
ZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7Ci0gICAgICAgIHN0
YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hl
YWJsZVNsb3QpCisgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5
RGF0YSwgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxl
U2xvdCk7CisgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgbGFzdFZhbGlkT2Zmc2V0KTsKICAgICAgICAgICAgIGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlv
bihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGl0ZXJh
dG9yOwogICAgICAgICB9CkBAIC02MywxNSArNjMsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
Ci0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFN0cnVj
dHVyZS0+Zmlyc3RWYWxpZE9mZnNldCgpOyB9CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGxhc3RP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWYWxpZE9mZnNldDsgfQorICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXRFbmQoKSBjb25zdCB7IHJldHVybiBsYXN0T2Zmc2V0KCkgKyAxOyB9
CisgICAgICAgIAorICAgICAgICBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBtX251bUNhY2hlYWJs
ZVNsb3RzKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG9mZnNl
dCA9IGk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgPD0gbV9sYXN0VmFsaWRPZmZzZXQ7CiAgICAgICAgIH0KIAotICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCBpKTsKKyAgICAgICAgc2l6ZV90IGluZGV4
Rm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0IC0g
Zmlyc3RPZmZzZXQoKTsgfQorICAgICAgICAKKyAgICAgICAgSlNWYWx1ZSBnZXRGb3JPZmZzZXQo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRGb3JJbmRleChleGVjLCBvYmplY3Qs
IGluZGV4Rm9yT2Zmc2V0KG9mZnNldCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBK
U1ZhbHVlIGdldEZvckluZGV4KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IGkpOwogICAg
ICAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1fanNTdHJpbmdzU2l6ZTsgfQogCiAgICAgICAg
IHZvaWQgc2V0Q2FjaGVkU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkBAIC05OSwxMSArMTA3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgICAgIAotICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVh
YmxlU2xvdCk7CisgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIFByb3BlcnR5T2Zmc2V0
IGxhc3RWYWxpZE9mZnNldCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9j
YWNoZWRTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9j
YWNoZWRQcm90b3R5cGVDaGFpbjsKLSAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVTbG90
czsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9sYXN0VmFsaWRPZmZzZXQ7CiAgICAgICAgIHVp
bnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDgg
KzEzMCw4IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBm
b3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90
IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNW
YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NiArMjEsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3Bl
cnR5TWFwSGFzaFRhYmxlX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoVGFibGUuaD4KQEAgLTcyLDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2Vy
T2YyKHVuc2lnbmVkIHYpCiAKIHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJ
bXBsKiBrZXk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dDsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNw
ZWNpZmljVmFsdWU7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1h
cEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1w
bCoga2V5LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChv
ZmZzZXQpCiAgICAgICAgICwgYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc1LDcgKzE3Niw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhh
c0RlbGV0ZWRPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAg
dm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBhZGREZWxl
dGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZz
ZXQgbmV4dE9mZnNldChKU1R5cGUgdHlwZSk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlU
YWJsZSwgZW5zdXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRl
ZC4KICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHkoSlNHbG9iYWxEYXRhJiwgSlND
ZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOwpAQCAtMjMwLDcgKzIzMyw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQqIG1faW5kZXg7CiAgICAgdW5zaWduZWQgbV9rZXlDb3VudDsK
ICAgICB1bnNpZ25lZCBtX2RlbGV0ZWRDb3VudDsKLSAgICBPd25QdHI8IFZlY3Rvcjx1bnNpZ25l
ZD4gPiBtX2RlbGV0ZWRPZmZzZXRzOworICAgIE93blB0cjwgVmVjdG9yPFByb3BlcnR5T2Zmc2V0
PiA+IG1fZGVsZXRlZE9mZnNldHM7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWluaW11
bVRhYmxlU2l6ZSA9IDE2OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbXB0eUVudHJ5SW5k
ZXggPSAwOwpAQCAtMjY0LDkgKzI2Nyw5IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0
eVRhYmxlKEpTR2wKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZl
Y3Rvci4KLSAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIu
bV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhl
ckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAo
b3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CisgICAgICAgIG1f
ZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNp
dHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMjg4LDkgKzI5MSw5IEBAIGlubGlu
ZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wKICAgICB9CiAKICAgICAvLyBDb3B5
IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhl
ckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0
ZWRPZmZzZXRzKSk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCiBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6flByb3BlcnR5VGFibGUoKQpAQCAtNDY5LDIwICs0NzIsMzEgQEAgaW5s
aW5lIGJvb2wgUHJvcGVydHlUYWJsZTo6aGFzRGVsZXRlZE9mZgogICAgIHJldHVybiBtX2RlbGV0
ZWRPZmZzZXRzICYmICFtX2RlbGV0ZWRPZmZzZXRzLT5pc0VtcHR5KCk7CiB9CiAKLWlubGluZSB1
bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIHsKLSAgICB1bnNpZ25l
ZCBvZmZzZXQgPSBtX2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7CisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOwogICAgIG1fZGVsZXRlZE9mZnNldHMt
PnJlbW92ZUxhc3QoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbmxpbmUgdm9pZCBQcm9w
ZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKK2lubGluZSB2b2lk
IFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQog
ewogICAgIGlmICghbV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9
IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KTsKICAgICBtX2RlbGV0ZWRP
ZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIAoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3Bl
cnR5VGFibGU6Om5leHRPZmZzZXQoSlNUeXBlIHR5cGUpCit7CisgICAgaWYgKGhhc0RlbGV0ZWRP
ZmZzZXQoKSkKKyAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICAKKyAgICBp
ZiAodHlwZSA9PSBGaW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBzaXplKCk7CisgICAg
CisgICAgcmV0dXJuIHNpemUoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCiBpbmxpbmUg
UGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBQcm9wZXJ0eVRhYmxlOjpjb3B5KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpCiB7CiAg
ICAgQVNTRVJUKG5ld0NhcGFjaXR5ID49IG1fa2V5Q291bnQpOwpAQCAtNDk5LDcgKzUxMyw3IEBA
IGlubGluZSBzaXplX3QgUHJvcGVydHlUYWJsZTo6c2l6ZUluTWVtb3IKIHsKICAgICBzaXplX3Qg
cmVzdWx0ID0gc2l6ZW9mKFByb3BlcnR5VGFibGUpICsgZGF0YVNpemUoKTsKICAgICBpZiAobV9k
ZWxldGVkT2Zmc2V0cykKLSAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBh
Y2l0eSgpICogc2l6ZW9mKHVuc2lnbmVkKSk7CisgICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVk
T2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgUHJvcGVydHlPZmZzZXRfaAorI2RlZmluZSBQcm9wZXJ0eU9mZnNldF9oCisKKyNpbmNsdWRl
ICJKU1R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZiBVU0UoSlNWQUxVRTMyXzY0KQor
I2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2RlZmluZSBJTkxJTkVf
U1RPUkFHRV9DQVBBQ0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7
CisKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7CitzdGF0
aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gSU5MSU5FX1NU
T1JBR0VfQ0FQQUNJVFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZmlyc3RPdXRPZkxp
bmVPZmZzZXQgPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKK2lubGluZSB2b2lkIGNoZWNrT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsK
KyAgICBBU1NFUlQob2Zmc2V0ID49IGludmFsaWRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBj
aGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIFVO
VVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBBU1NFUlQo
b2Zmc2V0ID49IGludmFsaWRPZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9m
ZnNldAorICAgICAgICAgICB8fCB0eXBlID09IEZpbmFsT2JqZWN0VHlwZQorICAgICAgICAgICB8
fCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVP
ZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7
CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZh
bGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZz
ZXQpKTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0ICE9IGlu
dmFsaWRPZmZzZXQ7Cit9CisKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZz
ZXQgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7Cit9CisKK2lubGluZSBib29sIGlzT3V0T2ZMaW5l
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQp
OworICAgIHJldHVybiAhaXNJbmxpbmVPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVf
dCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZh
bGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkp
OworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChv
ZmZzZXQpOworICAgIEFTU0VSVChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1
cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zm
c2V0SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYg
KGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbklubGluZVN0
b3JhZ2Uob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNl
dCk7Cit9CisKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7Cisg
ICAgaWYgKG9mZnNldCA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQgKyAxOworfQorCitpbmxp
bmUgc2l6ZV90IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBp
ZiAodHlwZSA9PSBGaW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyAxOwor
ICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChvZmZzZXQpOwor
fQorCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0
eXBlKTsKKyAgICBpZiAodHlwZSAhPSBGaW5hbE9iamVjdFR5cGUgJiYgb2Zmc2V0ID09IGludmFs
aWRPZmZzZXQpCisgICAgICAgIHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICByZXR1
cm4gb2Zmc2V0ICsgMTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlP
ZmZzZXRGb3IoSlNUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZv
cihpbnZhbGlkT2Zmc2V0LCB0eXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBQcm9wZXJ0eU9mZnNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiAr
MjMsNyBAQAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5o
IgorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAt
ODksNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBl
IGNhY2hlZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBl
OyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFBy
b3BlcnR5VHlwZSAhPSBVbmNhY2hlYWJsZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQotICAg
ICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2Fj
aGVhYmxlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpT
VmFsdWUgdmFsdWUsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1
ZSBzbG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9
IEpTQ19WQUxVRV9NQVJLRVI7CkBAIC0xNjAsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBtX2RhdGEuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNP
YmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRDYWNo
ZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXR0
ZXJGdW5jKTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VS
OwpAQCAtMjA2LDcgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
ICAgICAvLyBDbGVhciBvZmZzZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlz
IFByb3BlcnR5U2xvdCBoYXMgYmVlbiB1c2VkIGJlZm9yZS4KICAgICAgICAgICAgIC8vIChGb3Ig
b3RoZXIgZGF0YSBtZW1iZXJzLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1
c2UgcmV1c2Ugd291bGQgbWVhbmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAg
IG1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAg
ICAgICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgIH0K
IApAQCAtMjMyLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1f
dmFsdWU7CiAgICAgICAgIEpTVmFsdWUgbV90aGlzVmFsdWU7CiAKLSAgICAgICAgc2l6ZV90IG1f
b2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgQ2FjaGVk
UHJvcGVydHlUeXBlIG1fY2FjaGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCShyZXZpc2lv
biAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNs
b3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHko
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQ
cm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3R5cGUgPSBFeGlzdGluZ1Byb3BlcnR5OwogICAgICAgICAgICAgbV9i
YXNlID0gYmFzZTsKICAgICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNl
dCkKKyAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0
eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0cmljdE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSAhPSBVbmNhY2hhYmxlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBj
b25zdCB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKICAg
ICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29m
ZnNldDsKICAgICAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cml2YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsK
LSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKICAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEyMTYzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Niw4ICsxNTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUp
CiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBv
aW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KHR5cGVJbmZvLmlzRmluYWxPYmplY3QoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFn
ZUNhcGFjaXR5IDogMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxp
bmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGlj
dGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBA
IC0xNzksOCArMTc5LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBt
X2NsYXNzSW5mbygmc19pbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0
aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAg
ICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDApCisgICAg
LCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGlj
dGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAs
IG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBT
dHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlw
ZShnbG9iYWxEYXRhLCB0aGlzLCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBt
X2NsYXNzSW5mbyhwcmV2aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRj
aHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KHByZXZpb3VzLT5tX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZz
ZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291dE9m
TGluZUNhcGFjaXR5KQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGlj
dGlvbmFyeUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVk
UHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhw
cmV2aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBA
IHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+bV9wcmV2aW91cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0
cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsg
MSk7CisgICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlU
YWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiAKICAg
ICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobV9vZmZz
ZXQgKyAxKTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RP
ZmZzZXQobV9vZmZzZXQpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNp
emUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNb
aV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9w
ZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFj
dXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2Fw
YWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1f
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVf
dCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0
cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICBy
ZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5l
Q2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkK
IHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
SW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91
cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmlj
VmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQp
OworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBt
X3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+
bV9vZmZzZXQ7CiAgICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAt
MzA0LDcgKzMwNCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQK
ICAgICByZXR1cm4gMDsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8g
SWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBw
b2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNv
cnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDgg
QEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1
Y3R1cmUqIHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlv
bik7CiAgICAgICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAg
aWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNp
emUoKSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFu
c2l0aW9uLT5ncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRp
b247CiAgICAgfQogICAgIApAQCAtMzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24t
PnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
ID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNp
dGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24t
Pm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAg
ICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlv
bi0+bV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5h
ZGQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAK
LVN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQp
CiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwog
CkBAIC01NDgsMTggKzU0OCwxOSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rp
b25hcnlTCiAKICAgICAgICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUt
PnNpemUoKTsKICAgICAgICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsK
LQorICAgICAgICAKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IGZpcnN0T2Zmc2V0ID0gZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUo
KSk7CiAgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJs
ZS0+ZW5kKCk7CiAgICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1f
cHJvcGVydHlUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAg
ICAgICAgICB2YWx1ZXNbaV0gPSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQp
OwogICAgICAgICAgICAgLy8gVXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBw
cm9wZXJ0eSBvZmZzZXRzCi0gICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAg
ICAgaXRlci0+b2Zmc2V0ID0gaSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBDb3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBm
aW5hbCBsb2NhdGlvbnMKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5
Q291bnQ7IGkrKykKLSAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERh
dGEsIGksIHZhbHVlc1tpXSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChn
bG9iYWxEYXRhLCBmaXJzdE9mZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9w
ZXJ0eVRhYmxlLT5jbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4g
dGhpczsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNo
ZSk7CiAKQEAgLTU3OSwxMyArNTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
V2l0aG91dFRyYW4KICAgICAKICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRT
cGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSk7Ci0gICAgaWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCi0gICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5l
U2l6ZSgpID4gb3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFj
aXR5KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFy
eSgpKTsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcg
QEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBw
aW4oKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0
dXJuIG9mZnNldDsKKyAgICByZXR1cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQg
U3RydWN0dXJlOjpwaW4oKQpAQCAtNjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0
eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVj
dHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBvd25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRh
YmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFi
bGUpIDogbmV3IFByb3BlcnR5VGFibGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZz
ZXQpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5
VGFibGUobnVtYmVyT2ZTbG90c0Zvckxhc3RPRmZzZXQobV9vZmZzZXQpKSk7CiB9CiAKLXNpemVf
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxs
KiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGds
b2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RG
Ojpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlk
KCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5k
OworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRy
eS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUu
Z2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1
bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFs
dWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJU
KGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQo
IWlzVmFsaWRPZmZzZXQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsKIAogICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAtNjk4
LDEyICs2OTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAg
ICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKCk7CiAK
LSAgICB1bnNpZ25lZCBuZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNE
ZWxldGVkT2Zmc2V0KCkpCi0gICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+Z2V0
RGVsZXRlZE9mZnNldCgpOwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0
eVRhYmxlLT5zaXplKCk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0
eVRhYmxlLT5uZXh0T2Zmc2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1fcHJvcGVydHlU
YWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZz
ZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDcgKzcwNiw3IEBAIHNp
emVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3T2Zm
c2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC03MjQsNyArNzE5LDcg
QEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcgogICAgIGlmICghcG9z
aXRpb24uZmlyc3QpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92ZShw
b3NpdGlvbik7CiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNldCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNp
b24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCk7
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZz
ZXQpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQ
cm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJv
dG90eXBlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKQEAgLTEwMywzMiArMTAzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJs
ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgICAgIGJvb2wg
ZGlkVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQotICAgICAg
ICBib29sIHB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgYm9vbCBwdXRXaWxs
R3Jvd091dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAg
ICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29m
ZnNldCArIDEpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpID49IGN1cnJlbnRTaXplKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUg
PT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
dXJyZW50U2l6ZSA9IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50
U2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGluZUNh
cGFjaXR5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VS
VChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlT
dG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgp
ID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAg
IGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKLSAgICAgICAg
ICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9w
cm9wZXJ0eVRhYmxlLT5zaXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJs
ZS0+c2l6ZSgpID09IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUo
KTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkoKTsgCiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlv
bmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVz
ZWQgd2l0aCBjYXV0aW9uLiAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90
IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgYWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNl
dChnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBib29s
IGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9uZURp
Y3Rpb25hcnlLaW5kOyB9CkBAIC0xNDksMTggKzE0OSwxMDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogCi0gICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7
IH0KKyAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgpOworICAgICAgICB9CiAgICAgICAgIGJv
b2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmlu
ZCk7CiAKLSAgICAgICAgdm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAg
ICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5OyB9Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25z
dCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAo
bV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkg
OiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6ZV90
IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUpOwotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xv
YmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICB2b2lkIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOworICAg
ICAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAg
ICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5
cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6
ZSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNp
dHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVy
biB0b3RhbFNpemUgLSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZz
ZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5v
bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlw
ZUluZm8udHlwZSgpICE9IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9w
ZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3Bl
cnR5U3RvcmFnZVNpemUoKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJl
dHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAg
ICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7
CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5z
aWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0
eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVDYXBhY2l0eSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFs
U2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAg
fQorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlOworICAg
ICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0g
RmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdDsKKyAgICAgICAg
ICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9w
ZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgaWYgKHJlc3Vs
dCA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5l
U3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUtub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAg
fQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1
cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAg
ICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5ICsgaW5saW5lQ2FwYWNpdHkoKTsK
KyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0VmFsaWRPZmZzZXQoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VD
YXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZz
ZXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7
CisgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgc2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICghaGFzSW5saW5lU3Rv
cmFnZSgpKQorICAgICAgICAgICAgICAgICAgICBzaXplICs9IGlubGluZVN0b3JhZ2VDYXBhY2l0
eTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSAtIDE7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAK
ICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAt
MTc3LDcgKzI2OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc05vbkVu
dW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJv
cGVydGllczsgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNl
dCA9PSBub09mZnNldDsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVy
biBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiAhaXNWYWxp
ZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7
IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50OyB9CkBAIC0yNzMsOCArMzY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0g
RGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0g
ICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAg
c2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRT
cGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVt
b3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNp
Z25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAg
LTMwMSw3ICszOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25D
b3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIg
b2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRo
ZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAg
ICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAxOworICAgICAg
ICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKICAgICAg
ICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVDaGFpbiog
Y2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAtMzEwLDggKzQwNiw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3Ro
ID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBub09mZnNldCA9IC0xOwotCiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQg
PSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CkBAIC0zMzYsMTAgKzQzMCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIG11dGFibGUgSW5saW5lV2F0Y2hw
b2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogCi0gICAgICAgIHVpbnQzMl90IG1f
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIHVpbnQzMl90IG1fb3V0T2ZMaW5lQ2Fw
YWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnlt
b3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
bV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAg
ICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwpAQCAtMzUzLDI2ICs0NDcsMjYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlm
aWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUg
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJs
ZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBpbnZh
bGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0
eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgICAgIHJldHVybiBl
bnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8g
ZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVf
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFt
X3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAg
ICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRy
eSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0Owot
ICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KICAg
ICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNv
bnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150377</attachid>
            <date>2012-07-02 01:03:02 -0700</date>
            <delta_ts>2012-07-02 21:40:50 -0700</delta_ts>
            <desc>property name iteration done right</desc>
            <filename>overflowstorage_patch_7.diff</filename>
            <type>text/plain</type>
            <size>185527</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNjYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBA
QAorMjAxMi0wNy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhM
b2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhB
ZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6
CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6
cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRM
b2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAg
ICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29k
ZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3Bl
cnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAg
ICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5
VG9TdHViSW5mbyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm86OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwYXRjaEdldEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6SklUOjpwYXRjaFB1dEJ5
SWRSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpncm93T3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlv
bik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNJbmxp
bmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2VVbnNhZmUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omxv
Y2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNldEZvckxvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmpl
Y3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2Jq
ZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNldE9mT3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAoSlNDOjppbmRleFJl
bGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1h
cEhhc2hUYWJsZS5oOgorICAgICAgICAoUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TWFwRW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoUHJvcGVydHlU
YWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlUYWJsZTo6c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5T2Zm
c2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Y2hlY2tPZmZzZXQp
OgorICAgICAgICAoSlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzVmFsaWRP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6CisgICAgICAgIChKU0M6Omlz
T3V0T2ZMaW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
b2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAgICAg
ICAoSlNDOjpmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVNsb3Q6OmNsZWFyT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5o
OgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6UHV0UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJvcGVy
dHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VDYXBh
Y2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQ
aW5uaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Om91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJ
bmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnRvdGFsU3RvcmFnZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRv
dGFsU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmaXJzdFZhbGlk
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpsYXN0VmFsaWRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRyYW5zaXRpb25Db3VudCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAx
Mi0wNi0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTT2Jq
ZWN0IHdhc3RlcyB0b28gbXVjaCBtZW1vcnkgb24gdW51c2VkIHByb3BlcnR5IHNsb3RzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2Miw2ICs1NjIsMTEgQEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNz
ZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBsYWJlbCgpOworICAgIH0KICNlbmRpZgogICAgIAogICAgIExh
YmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs2NzcsMTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJlYWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9j
YXRpb24oKSk7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChD
b2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJl
cGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9jYXRpb24oKSk7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkxhYmVs
IGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNo
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9S
ZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIy
LDI0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xp
bmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsK
ICAgICB9CisgICAgCisgICAgdm9pZCByZXBsYWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uTGFiZWwg
bGFiZWwpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKGxh
YmVsKTsKKyAgICB9CisgICAgCisgICAgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlv
bihDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWws
IGJvb2wgaXNBY3RpdmUpCisgICAgeworICAgICAgICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAg
ICByZXBsYWNlV2l0aExvYWQobGFiZWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBs
YWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbCk7CisgICAgfQogCiBwcml2YXRlOgogICAg
IHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiAr
MTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiA1OwogICAgIH0KICAgICAKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7
CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3Ry
dWN0aW9uU3RhcnQpOworI2lmIENQVShYODZfNjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkg
PT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAo
KnB0cikgeworICAgICAgICBjYXNlIE9QX01PVl9HdkV2OgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsK
KyAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1
Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9
PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRyKys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgq
cHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9WX0d2RXY6CisgICAgICAgICAgICAqcHRyID0gT1Bf
TEVBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2Fs
bFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBA
QCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdldF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
b3V0X29mX2xpbmUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxm
OgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRfc2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtNDkx
LDcgKzQ5NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4KICAg
ICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwg
ImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1
cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1
cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkp
IHsKKyAgICAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX3B1dF9ieV9pZCkgfHwgdlBDWzBdLnUuKSB7CiAgICAgICAgIHByaW50U3RydWN0dXJlKCJw
dXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAzMyw2ICsx
MDM2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZF9zZWxmOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfY2hhaW46CkBAIC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9v
Zl9saW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBs
b2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMDcxLDEwICsxMDc5LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xp
bmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dl
bmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rp
b24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnNbaV1dOwogICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAg
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJl
LmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2VVbmxpbmtpbmcpCkBAIC0yMDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAg
ICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0
KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRl
c0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJp
YnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoU2ltcGxlLCBmYWxzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3Bl
Y2lmaWNWYWx1ZSk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvckNoYWluKEdldEIKICAgICAgICAgCiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0
cnVjdHVyZS0+Z2V0KAogICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNl
dCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0
LmFkZChzdHJ1Y3R1cmUpOwpAQCAtMTU2LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50
LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBp
ZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zm
c2V0KHJlc3VsdC5tX29mZnNldCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNl
dC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBK
U1ZhbHVlKHNwZWNpZmljVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
cmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChy
ZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNl
dC5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgc2l6ZV90
IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7
CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQobXlPZmZzZXQpKSB7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC0xOTYsNyArMTk2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFk
ZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBp
ZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVy
ZVNldC5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjMsMTEgKzIyMywxMSBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgICAg
ICAKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZv
dW5kKTsKKyAgICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBu
b3RGb3VuZCkgeworICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAg
ICAgICAgIHJlc3VsdC5tX3N0YXRlID0gVGFrZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0Lm1f
c3RydWN0dXJlU2V0LmNsZWFyKCk7CiAgICAgICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJ
KHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgR2V0
QnlJZFN0YXR1c19oCiAjZGVmaW5lIEdldEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVy
dHlPZmZzZXQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90
Rm91bmQuaD4KIApAQCAtNDYsMTMgKzQ3LDEzIEBAIHB1YmxpYzoKIAogICAgIEdldEJ5SWRTdGF0
dXMoKQogICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKLSAgICAgICAgLCBtX29mZnNl
dChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsKICAg
ICB9CiAgICAgCiAgICAgR2V0QnlJZFN0YXR1cygKICAgICAgICAgU3RhdGUgc3RhdGUsIGJvb2wg
d2FzU2VlbkluSklULCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVy
ZVNldCgpLAotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsIEpTVmFsdWUgc3BlY2lm
aWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0
cnVjdHVyZSo+KCkpCisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9
IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAg
ICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fY2hhaW4oY2hhaW4p
CkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgY29uc3QgVmVj
dG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0
dXJucyBlbXB0eSB2ZWN0b3IgaWYgdGhpcyBpcyBhIGRpcmVjdCBhY2Nlc3MuCiAgICAgSlNWYWx1
ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJl
dHVybnMgSlNWYWx1ZSgpIGlmIHRoZXJlIGlzIG5vIHNwZWNpZmljIHZhbHVlLgotICAgIHNpemVf
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiAgICAgYm9vbCB3YXNT
ZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQogICAgIApAQCAtODgs
NyArODksNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAg
ICBWZWN0b3I8U3RydWN0dXJlKj4gbV9jaGFpbjsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1
ZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAg
ICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkg
LyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0
aF90aGlzLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3Bf
Z2V0X2J5X2lkLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8o
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwK
ICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfcHJvdG8sIDkpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfY2hhaW4sIDkpIC8q
IGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApAQCAtMTIyLDkgKzEyMywxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3N0cmluZ19sZW5ndGgsIDkpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwg
NCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKKyAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rf
b3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwg
OSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBt
YWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsMTAgKzQ1LDExIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb20KICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAotICAgIGlmIChpbnN0cnVj
dGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKLSAgICAgICAgc2l6ZV90
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBp
ZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkCisgICAgICAg
IHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2Zf
bGluZSkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmICghaXNWYWxp
ZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7
CiAgICAgfQpAQCAtNTYsMTYgKzU3LDE4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb20KICAgICBBU1NFUlQoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ci0gICAgICAg
ICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09
IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbAorICAgICAgICAgICB8fCBpbnN0
cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmUKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0g
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKICAgICAK
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJl
LmdldCgpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3Ry
dWN0dXJlQ2hhaW4uZ2V0KCk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CiAgICAgQVNTRVJU
KGNoYWluKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnBy
b2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgIGlmIChvZmZzZXQgPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAs
IDAsIG5vdEZvdW5kKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUt
PmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIAogICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwg
b2Zmc2V0KTsKICNlbHNlCkBAIC05NCwyNCArOTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNj
ZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5m
by51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0
U3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYg
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlUmVwbGFjZSwKICAgICAgICAgICAgICAgICBzdHVi
SW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAg
ICAgICAgICAgMCwgMCwKICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwg
aW52YWxpZE9mZnNldCk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OiB7CiAgICAgICAgIEFTU0VSVChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9u
LnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5z
aXRpb24uc3RydWN0dXJlLT5nZXQoCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQg
IT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJh
bnNpdGlvbiwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnBy
ZXZpb3VzU3RydWN0dXJlLmdldCgpLApAQCAtMTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1
cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUu
cHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAw
LCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
LCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQot
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZh
bGlkT2Zmc2V0KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19oCiAj
ZGVmaW5lIFB1dEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNp
bmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fbmV3
U3RydWN0dXJlKDApCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAsIG1f
b2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAg
ewogICAgIH0KICAgICAKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9mZnNl
dCkKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUoc3Rh
dGUpCiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlKQogICAgICAgICAsIG1f
bmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2Vz
U2xvd1BhdGgpID09ICFtX29sZFN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAh
PSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwotICAg
ICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2Vz
U2xvd1BhdGgpID09IChtX29mZnNldCA9PSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKG1f
c3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09ICht
X29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQdXRC
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwg
SWRlbnRpZmllciYpOwpAQCAtOTAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAg
ICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZUNoYWluOyB9Ci0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0
OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBA
IC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7
CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9z
dHJ1Y3R1cmVDaGFpbjsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQg
bV9vZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZl
R2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQCBzdGF0aWMg
UmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yU3RyCiB7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCgKICAgICAgICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBh
dHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RG
b3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJl
c29sdmVHbG9iYWxTdGF0dXMoKTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1
cyhSZXNvbHZlR2xvYmFsU3RhdHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZp
Y1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICAKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBz
dGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQs
CisgICAgICAgIFN0YXRlIHN0YXRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNW
YWx1ZSA9IEpTVmFsdWUoKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1f
c3RydWN0dXJlKHN0cnVjdHVyZSkKQEAgLTcwLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRo
OyB9CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyZTsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1Zh
bHVlOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1f
c3RydWN0dXJlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29m
ZnNldDsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVH
bG9iYWxTdGF0dXMKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2
IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
dWN0dXJlcy5zaXplKCk7IH0KICAgICAKLSAgICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVy
dHlTdG9yYWdlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJl
c1tpXS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8v
IENhbGwgdGhpcyBpZiB5b3Uga25vdyB0aGF0IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lz
dCBvZiBleGFjdGx5CiAgICAgLy8gb25lIHN0cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmds
ZXRvblN0cnVjdHVyZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBpbnQ4X3QgdmFsdWVHUFI7CiAgICAgICAgICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFI7CiAg
ICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb0RvbmU7CisgICAgICAgICAgICAgICAg
aW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2FkOwogICAgICAgICAgICAgICAgIGludDMyX3Qg
ZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2Fs
bFRvU2xvd0Nhc2U7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNoZWNrSW1tVG9DYWxs
OwpAQCAtMjE5LDYgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZUNoZWNrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNl
bWVudExhYmVsOwogI2Vsc2UKQEAgLTIzMCw2ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICAgICAgfSBnZXQ7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1lbnRM
YWJlbDsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihi
b29sIHVzZXNSZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFu
ZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAg
ICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBk
ZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAt
MTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudElu
dGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBk
ZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBi
YXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFn
ZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9k
ZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlm
ICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihK
U09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNl
dCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxz
ZSB7CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFBy
b3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQog
ICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAg
ICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXpl
KCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsK
ICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAg
c3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0
b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAg
ICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsK
ICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRh
KTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwg
T3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0
KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICgh
Z2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1
cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0
cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2
LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAg
ICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAg
ICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwg
Y3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9
IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFs
bEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVu
bGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0
aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRo
CkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRp
b25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVT
dG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGlu
YXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlk
U3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFy
c2VCbG9jaygpCkBAIC0yMjU5LDIwICsyMjUwLDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFoYXNFeGl0
U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpKSB7CiAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7Ci0gICAgICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVy
dHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVy
ZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIShzaXpl
b2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICAgICAgICAg
ICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0
eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwot
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0
LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIHByb3BlcnR5U3Rv
cmFnZSwgYmFzZSwgdmFsdWUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0
b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3Jh
Z2VBY2Nlc3NEYXRhLm9mZnNldCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxh
dGl2ZVRvQmFzZShwdXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBzdG9y
YWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nl
c3NEYXRhKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc0V4aXRTaXRlCkBAIC0yMzA4LDE2
ICsyMjk0LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUo
KSkpKSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSk7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAgICAgICAgICAgICAgICBOb2RlSW5k
ZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm5l
d1N0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKQogICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAg
ICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChH
ZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZz
ZXQgPSAwOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAog
ICAgICAgICAgICAgICAgICAgICBQdXRCeU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLApAQCAtMjMyNiw3ICsyMzA3
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3Rv
cmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFn
ZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNl
dDsKKyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0
aXZlVG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3Jh
Z2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vz
c0RhdGEpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI3MzgsOCArMjcxOSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24s
IGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIs
IHN0YXR1cy5zdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVOdW1iZXIrKzsg
Ly8gU2tpcCBvdmVyIHRoZSB1bnVzZWQgZ2xvYmFsIHJlc29sdmUgaW5mby4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjE2
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0IKICNlbmRpZgogICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwg
bGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Nsb3dQYXRoR2Vu
ZXJhdG9yLT5sYWJlbCgpKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9u
ZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9kb25lKSk7CisgICAgICAgIGlu
Zm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlTdG9yYWdlTG9hZCkpOwogICAgICAgICBpbmZvLnBhdGNo
LmRmZy5iYXNlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fYmFzZUdQUjsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IG1fcHJvcGVydHlB
Y2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcg
QEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUlt
bSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ss
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ5U3RvcmFnZUxvYWQsCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3JlLAogICAgICAg
ICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFj
Y2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgcHJvcGVyeVN0b3JhZ2VMb2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkT3JTdG9yZSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExvYWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdl
bmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCkBAIC0xNjEsNiArMTYzLDcgQEAgc3RydWN0IFBy
b3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikK
ICAgICAgICAgLCBtX3N0cnVjdHVyZUltbShzdHJ1Y3R1cmVJbW0pCiAgICAgICAgICwgbV9zdHJ1
Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKKyAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUxv
YWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAsIG1f
bG9hZE9yU3RvcmUobG9hZE9yU3RvcmUpCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTgy
LDYgKzE4NSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgQ29kZU9yaWdp
biBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVj
dHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNo
ZWNrOworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBt
X2xvYWRPclN0b3JlOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1zdGF0
aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBv
ZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3Qp
CitzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3QgRnVuY3Rpb25QdHIgJnNsb3dQYXRoRnVuY3Rpb24s
IGJvb2wgY29tcGFjdCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKIApAQCAtNTIsMTggKzUyLDE5IEBAIHN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2Vs
ZkFjY2VzcyhDb2QKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgJiB0aGUgb2Zm
c2V0IG9mIHRoZSBsb2FkLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDaGVja0ltbVRvQ2FsbCksIHN0cnVjdHVyZSk7CisgICAgcmVwYXRjaEJ1
ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9h
ZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
aWYgKGNvbXBhY3QpCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0KTsKKyAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9h
ZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3Jh
Z2Uob2Zmc2V0KSk7CiAgICAgZWxzZQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQp
OworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9h
ZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3Jh
Z2Uob2Zmc2V0KSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGlmIChjb21wYWN0KSB7
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxU
b1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0
b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9m
KEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2Fk
TG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0
b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVl
KSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSk7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRP
clN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdl
KG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2Fs
bFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEwNSw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZlCiAgICAgbGlu
a1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc3VjY2Vz
cywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKSwgc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2Fs
bFRvU2xvd0Nhc2UpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNz
U3R1YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIHNpemVfdCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxh
YmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCitz
dGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVf
dCBjb3VudCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29k
ZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxh
YmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIHN0dWJSb3V0aW5lKQogewogICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKQEAgLTEzOSwxMyArMTQw
LDIzIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIKICAgICAgICAg
Y3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgc3R1YkppdC5sb2Fk
UHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsK
KyAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHRHUFIpOworICAgICAg
ICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcyhwcm90b09i
amVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSksIHJlc3VsdEdQUik7CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRU
YWdHUFIpOwotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BS
KTsKKyAgICAgICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHBy
b3RvT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRU
YWdHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgc3R1
YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZPdXRPZkxpbmV0b3JhZ2UoKSwgcmVz
dWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
b2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0
dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5P
dXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
LCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
c3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTU2Nyw3ICs1NzgsNyBAQCBzdGF0aWMgdm9pZCBlbWl0
UHV0UmVwbGFjZVN0dWIoCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAgICAK
LSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVk
ZWQgfHwgIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkpIHsKKyAgICBpZiAoc2Ny
YXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgaXNPdXRP
ZkxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CiAgICAgICAgIHNjcmF0Y2hHUFIg
PSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7CiAg
ICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAgICAgc3R1YkppdC5wdXNo
KHNjcmF0Y2hHUFIpOwpAQCAtNTg2LDIwICs1OTcsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJl
cGxhY2VTdHViKAogI2VuZGlmCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3Ry
dWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBl
bHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
c3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC02ODUs
MjAgKzY5NiwyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAKICAgICBz
dHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3RvcmVQ
dHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5z
dG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmVQ
dHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkp
OwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0g
ICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnN0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlz
aW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNSw2ICs1MDUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAg
c3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCisgICAg
SklUQ29tcGlsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJl
c3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xv
YWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChK
SVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgIEpJ
VENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9qaXQu
bG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNTQ3LDcgKzU0OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9q
aXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAg
ICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywK
KyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hl
Y2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdMb2FkV2l0aFBhdGNoLCBw
YXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKICAgICAgICAg
ICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJl
c3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTYyLDYgKzU2Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmll
cihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKKyAgICBKSVRDb21waWxlcjo6TGFiZWwgcHJv
cGVydHlTdG9yYWdlTG9hZCA9IG1faml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwogICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CiAgICAgSklUQ29t
cGlsZXI6OkRhdGFMYWJlbDMyIHRhZ1N0b3JlV2l0aFBhdGNoID0gbV9qaXQuc3RvcmUzMldpdGhB
ZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KSkpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBwYXlsb2FkU3RvcmVXaXRoUGF0Y2gg
PSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVBheWxvYWRHUFIsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKQEAgLTU5NCw3ICs1OTYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAgICAgfQogICAgIG1faml0LmFk
ZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAg
ICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssCisgICAg
ICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBw
cm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENv
bXBhY3QodGFnU3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdChwYXlsb2FkU3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksCiAgICAg
ICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQ
YXlsb2FkR1BSKSwKQEAgLTM1NDMsNyArMzU0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0
T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VS
ZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRh
TGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRy
dXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCisgICAgSklU
Q29tcGlsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQu
bG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCkBAIC01MTQsOCArNTE1LDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5h
ZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAg
ICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2Fk
V2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNh
c3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAg
ICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJv
cGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdl
dCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhf
dD4ocmVzdWx0R1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiks
CiAgICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1
c2hlZCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBA
IC01MzMsNiArNTM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2Rl
TwogCiAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVC
YXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCisgICAgSklUQ29tcGlsZXI6
OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2lu
dHMoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CiAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbDMyIHN0b3JlV2l0aFBhdGNoID0gbV9qaXQuc3RvcmVQdHJXaXRo
QWRkcmVzc09mZnNldFBhdGNoKHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCAwKSk7CiAKQEAgLTU2Myw3ICs1NjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZChDb2RlTwogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRD
YWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVy
KGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9Ci0gICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3Mo
UHJvcGVydHlBY2Nlc3NSZWNvcmQoY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gu
bGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFz
ZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0
Y2hHUFIpKSk7CisgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCisgICAgICAgIFByb3BlcnR5
QWNjZXNzUmVjb3JkKAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJl
LCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0
aC5nZXQoKSwgZG9uZUxhYmVsLAorICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BS
KSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZUdQUiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQ
UikpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQog
CkBAIC0zNTY3LDcgKzM1NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJv
cGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3Vs
dEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMz
LDcgKzMzMyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICAg
ICB9CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KGNlbGwpKSB7Ci0gICAgICAgIEpTT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOworICAg
ICAgICBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2Vs
bCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MTcsNyArMzcxNyw3IEBAIHNraXBfaWRfY3VzdG9t
X3NlbGY6CiAgICAgICAgIEpTVmFsdWUgZXhwZWN0ZWRTdWJzY3JpcHQgPSBjYWxsRnJhbWUtPnIo
ZXhwZWN0ZWQpLmpzVmFsdWUoKTsKICAgICAgICAgaW50IGluZGV4ID0gY2FsbEZyYW1lLT5yKGkp
LmkoKSAtIDE7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0OwotICAgICAgICBpbnQgb2Zmc2V0ID0g
MDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gMDsKICAgICAgICAgaWYgKHN1YnNj
cmlwdCA9PSBleHBlY3RlZFN1YnNjcmlwdCAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgKGJhc2VW
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkgPT0gaXQtPmNhY2hlZFN0cnVjdHVyZSgpKSAmJiBp
dC0+Z2V0T2Zmc2V0KGluZGV4LCBvZmZzZXQpKSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUoYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0RGlyZWN0T2Zm
c2V0KG9mZnNldCkpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5
X3BuYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQorICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4ICszMjAsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgog
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC01MzcsNiArNTQxLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBo
b3RQYXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4p
OwogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSA9
IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9j
YXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKICAg
ICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVDaGVjayA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVDaGVjaykpOworICAgICAgICBpbmZvLnBh
dGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNy
b0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkBA
IC01NTAsNiArNTU1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0
aQogICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJl
Z2luTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAg
ICAgaW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0U3RydWN0dXJlVG9Db21wYXJlKSk7CisgICAgICAgIGlu
Zm8ucGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCA9
IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9j
YXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vs
c2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90
UGF0aEJlZ2luOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIGdldFN0cnVj
dHVyZVRvQ29tcGFyZTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgZ2V0
U3RydWN0dXJlQ2hlY2s7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0
b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGdldERpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTE4NSwxNyAr
MTg2LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKIAotICAgICAgICBQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9w
ZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oCisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJHZXRCeUlk
X1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRo
QmVnaW4sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZVRvQ29tcGFyZSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0
cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRM
YWJlbCwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0
cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJl
Q2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVs
MSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLCBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxLAorICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLAogI2VuZGlm
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQogICAgICAgICAg
ICAgOiBtX3R5cGUoR2V0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29k
ZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2luKQogICAgICAg
ICAgICAgLCBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJlVG9Db21wYXJlKQogICAgICAg
ICAgICAgLCBnZXRTdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKKyAgICAgICAgICAgICwg
cHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgICAgICAsIGdldERpc3BsYWNlbWVudExhYmVsKGRpc3BsYWNlbWVudExhYmVs
KQogI2Vsc2UKQEAgLTIwNiwxNiArMjE0LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVy
dHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8o
CisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJQdXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExh
YmVsCiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRM
YWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIpCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwx
LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExh
YmVsMgogI2VuZGlmCisgICAgICAgICAgICApCiAgICAgICAgICAgICA6IG1fdHlwZShQdXRCeUlk
KQogICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAg
ICAsIGhvdFBhdGhCZWdpbihob3RQYXRoQmVnaW4pCiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVy
ZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUpCisgICAgICAgICAgICAsIHByb3BlcnR5U3Rv
cmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICAgICAgLCBwdXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKICNlbHNlCkBA
IC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBK
SVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29tcGlsZShmdW5jdGlvbkVudHJ5QXJp
dHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBp
bGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRp
YyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxv
Y2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNv
ZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhzdHVi
SW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRP
ZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBj
dXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
KTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2Rl
SW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3Qoc3R1
YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIGlk
ZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0
dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAg
ICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAg
ICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJvdG90
eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVj
dHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQot
ICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9i
YWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBz
dHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJ
bmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQs
IGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0
QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4s
IHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8t
PmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2FjaGVk
T2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxE
YXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHVi
SW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiwg
U3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaFB1dEJ5
SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShD
b2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGly
ZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNv
ZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CisgICAgICAgIHN0
YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKICAgICAgICAgc3Rh
dGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBj
b2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAg
IHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0
aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBw
cml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBw
cml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0
dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVy
ZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7
CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwg
U3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWlu
Kiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJl
KiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogCiAgICAgICAgIFBhc3NSZWZQ
dHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBv
bGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVjdHVyZSopOwogICAgICAgICBMYWJl
bCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc0NvbnN0
cnVjdCA9IGZhbHNlKTsKQEAgLTQ2OCwxMCArNDgyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRIb3RQYXRoKCk7CiAgICAgICAgIHZvaWQgY29tcGls
ZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVy
KiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgYm9vbCBpc01l
dGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQ
YXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJ
RCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcs
IFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsK
KyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdp
c3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXls
b2FkLCBSZWdpc3RlcklEIG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFs
dWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlUHV0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0
ZXJJRCB2YWx1ZVBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICAgICAg
ICAgLy8gQXJpdGhtZXRpYyBvcGNvZGUgaGVscGVycwogICAgICAgICB2b2lkIGVtaXRBZGQzMkNv
bnN0YW50KHVuc2lnbmVkIGRzdCwgdW5zaWduZWQgb3AsIGludDMyX3QgY29uc3RhbnQsIFJlc3Vs
dFR5cGUgb3BUeXBlKTsKQEAgLTU0NywxMCArNTYxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlVlJlZywgSWRlbnRpZmll
ciopOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcs
IGludCBiYXNlVlJlZywgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRob2RDaGVjayA9IGZhbHNlKTsKLSAgICAgICAgdm9p
ZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zm
c2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAg
ICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJ
RCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIHZvaWQgY29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBS
ZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKLSAgICAgICAgdm9pZCBjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6
ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJl
dmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMsOCBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNo
ZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVk
SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1
cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBy
ZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVsSWdub3JpbmdXYXRj
aHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxh
Y2VtZW50TGFiZWwxID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJl
c3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMCk7IC8vIHBheWxvYWQK
ICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiA9IGxvYWRQdHJXaXRoQ29t
cGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QyLCBwYXRjaEdldEJ5SWREZWZhdWx0
T2Zmc2V0KSwgcmVnVDEpOyAvLyB0YWcKICAgICAKQEAgLTM0MSw3ICszNDIsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICAKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9T
RVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3ND
b21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0
eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRv
Q29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50
TGFiZWwyLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
LmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwg
bV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3Bs
YWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTM5OSw3ICs0MDAsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgRGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVm
YXVsdFN0cnVjdHVyZSkpKSk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QxKTsKKyAgICBMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBy
ZWdUMSk7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxID0gc3RvcmVQdHJXaXRo
QWRkcmVzc09mZnNldFBhdGNoKHJlZ1QyLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZh
dWx0T2Zmc2V0KSk7IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJl
bDIgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDMsIEFkZHJlc3MocmVnVDEs
IHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsgLy8gdGFnCiAgICAgCkBAIC00MDcsNyArNDA5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogCiAgICAgZW1p
dFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIsIHJlZ1QxLCByZWdUMiwgU2hvdWxkRmlsdGVySW1t
ZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0
eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZv
KFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMikp
OworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1
YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBo
b3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlz
cGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDMwLDMwICs0MzIsNDEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogfQogCiAvLyBDb21waWxl
IGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0
ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIGJhc2UpOwotICAgIGVtaXRTdG9yZShvZmZzZXQsIHZhbHVlVGFnLCB2YWx1ZVBh
eWxvYWQsIGJhc2UpOworICAgIGlmIChpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKQor
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q7Om9mZnNldE9mT3V0T2ZMaW5l
U3RvcmFnZSgpKSwgYmFzZSk7CisgICAgZW1pdFN0b3JlKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2Fj
aGVkT2Zmc2V0KSwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CiB9CiAKIC8vIENvbXBp
bGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3Jp
dGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRP
ZmZzZXQ7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAg
ZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCB2YWx1ZVRhZywgdmFs
dWVQYXlsb2FkLCBiYXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdp
c3RlcklEIHRlbXAgPSByZXN1bHRQYXlsb2FkOwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBK
U09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2Fk
KG9mZnNldCwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBlbWl0TG9hZChp
bmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9h
ZCwgdGVtcCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBz
aXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNP
YmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxv
YWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBsb2FkUHRyKGJhc2UtPmFk
ZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRUYWcpOwotICAgIGxvYWQzMihBZGRyZXNz
KHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXls
b2FkKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZz
ZXQpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihiYXNlLT5sb2NhdGlvbkZvck9mZnNl
dChjYWNoZWRPZmZzZXQpKSwgcmVzdWx0VGFnKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVz
dWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1
bHRQYXlsb2FkKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9y
YWdlKCksIHJlc3VsdFRhZyk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVz
dWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwog
fQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIC8vIFRoZSBjb2RlIGJl
bG93IGFzc3VtZXMgdGhhdCByZWdUMCBjb250YWlucyB0aGUgYmFzZVBheWxvYWQgYW5kIHJlZ1Qx
IGNvbnRhaW5zIHRoZSBiYXNlVGFnLiBSZXN0b3JlIHRoZW0gZnJvbSB0aGUgc3RhY2suCiAjaWYg
Q1BVKE1JUFMpIHx8IENQVShTSDQpIHx8IENQVShBUk0pCkBAIC01NTMsNyArNTY2LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVs
KHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0
QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2Nr
KTsKICAgICAKQEAgLTU2NSwxMSArNTc4LDEyIEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxm
KENvZGVCbG9jayogY28KIAogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9l
cnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZv
ci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJl
VG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiks
IG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFn
CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+
aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsK
KyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFi
ZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNl
bWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENv
bXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50
TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQogCi12b2lkIEpJVDo6
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpw
YXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAg
ICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01ODEs
OCArNTk1LDkgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogCiAg
ICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJv
bSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1
cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNl
bWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZElu
c3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC51LnB1dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZz
ZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5wdXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdl
KG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAv
LyBwYXlsb2FkCisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlz
cGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQogCiB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKQEAgLTYyOSw3ICs2NDQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1
bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlf
ZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFBhdGNoZWRPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtNzAwLDcgKzcxNSw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHIKIH0KIAogCi12b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJl
cywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQp
Cit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGlj
U3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBK
dW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CkBAIC03
NjAsNyArNzc1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwo
c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVn
VDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC04MjksNyArODQ0LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAK
LXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBw
cm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0Nl
bGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAgLTkwNCw3ICs5MTksNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVt
cExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAgLTk3
OSw5ICs5OTQsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZQog
ewogICAgIEFTU0VSVChzaXplb2YoSlNWYWx1ZSkgPT0gOCk7CiAgICAgCi0gICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7
Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKLSAg
ICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBKdW1wIGlzSW5s
aW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3Jh
Z2VDYXBhY2l0eSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7Cisg
ICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSwgYmFzZSk7CisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGxv
YWRQdHIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWRQdHIoQmFzZUlu
ZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykgLSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKSwgcmVzdWx0VGFnKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDA2LDYgKzEwMjYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3RpCiAgICAgbG9hZDMyKGFkZHJlc3NG
b3IoaSksIHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9udW1DYWNoZWFibGVTbG90
cykpKSk7CisgICAgYWRkMzIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IsIG1fb2Zmc2V0QmFzZSkpLCByZWdUMyk7CiAgICAgY29tcGlsZUdldERp
cmVjdE9mZnNldChyZWdUMiwgcmVnVDEsIHJlZ1QwLCByZWdUMyk7ICAgIAogICAgIAogICAgIGVt
aXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3MywxNCArMzczLDE1IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgo
aW50IGJhc2UKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xv
d0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QwKTsKKyAgICBMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBy
ZWdUMCk7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbCA9IGxvYWRQdHJX
aXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QwLCBwYXRjaEdldEJ5SWRE
ZWZhdWx0T2Zmc2V0KSwgcmVnVDApOwogCiAgICAgTGFiZWwgcHV0UmVzdWx0KHRoaXMpOwogCiAg
ICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VHZXRCeUlkSG90UGF0aCk7CiAK
LSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJD
b21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90
UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBkaXNwbGFjZW1l
bnRMYWJlbCwgcHV0UmVzdWx0KSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5m
by5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQs
IG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJl
c3VsdCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCkBAIC00NDAsMTQgKzQ0MSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qCiAgICAgRGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7
CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5
U3RvcmFnZSgpKSwgcmVnVDIpOworICAgIExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBsYWJl
bElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBEYXRhTGFiZWwz
MiBkaXNwbGFjZW1lbnRMYWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdU
MSwgQWRkcmVzcyhyZWdUMiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwogCiAgICAgRU5E
X1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAgIGVtaXRXcml0
ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0
ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9w
ZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29t
cGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7CiB9CiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODk1LDcgKzg5NSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5m
bygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CiAgICAgICAgICAgICBwY1s0XS51LnN0
cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7
CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9p
ZF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC05NTIsNyArOTU4LDEwIEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpOwotICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNh
Y2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcGNb
Nl0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihl
eGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5z
ZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3QpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChw
Y1s4XS51Lm9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGlu
ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0
cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBv
ZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAg
ICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxMiw4ICsxNTMzLDggQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wbmFtZQogICAgIAogICAgIExMSU5UX09QKDEp
ID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKICAgICBMTElOVF9PUCgyKSA9IEpT
VmFsdWUobyk7Ci0gICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKLSAgICBM
TElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNp
emUoKSk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLT5maXJzdE9mZnNldCgpKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3
aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPm9mZnNldEVuZCgpKTsKICAgICAKICAgICBw
YyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOwogICAgIExMSU5UX0VORCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC05MTksNiArOTE5LDE3IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykK
IAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBv
YmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwg
SW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9v
dXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAg
am1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVT
dG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJl
YWR5OgorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2Jq
ZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9w
ZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUs
IHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtOTMwLDkgKzk0MSw3IEBAIG1hY3JvIHJlc29sdmVH
bG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
ICAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0
MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MiwgdDMpCiAgICAg
bG9hZGkgNFtQQ10sIHQwCiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KQEAgLTEwODcsMzEgKzEwOTYs
NTggQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAK
IAotX2xsaW50X29wX2dldF9ieV9pZDoKKyMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlf
aWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyMgb3Bjb2RlLiBX
ZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBm
YWlscywgc2luY2UKKyMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5
IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyMgdG8gdGFrZSBmYXN0IHBhdGggb24g
dGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQK
KyMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKworbWFjcm8gZ2V0QnlJZChnZXRQ
cm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgV2Ugb25seSBkbyBt
b25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlm
eSB0aGUKLSAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUg
dG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCi0gICAgIyBwaW5nLXBvbmdpbmcgaXMg
ZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51
ZQotICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2Ug
dGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKLSAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBk
b2luZyBhbnl3YXkuCiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZGkgMTZbUENdLCB0MQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0
QnlJZFNsb3cpCiAgICAgbG9hZGkgMjBbUENdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10s
IHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDJdLCB0MwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKLSAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIGxvYWRpIDMyW1BDXSwgdDEKLSAgICB2YWx1ZVByb2Zp
bGUodDMsIHQyLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
KyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgICAgICAg
ICBsb2FkaSBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAg
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQyCisgICAgICAg
ICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIGxvYWRpIDMy
W1BDXSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MiwgdDEpCisgICAg
ICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICAKKyAgICAgICAgLm9wR2V0QnlJZFNsb3c6Cisg
ICAgICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAg
ICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKIAotLm9wR2V0QnlJZFNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3Bh
dGNoKDkpCittYWNybyB3aXRoSW5saW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwg
Y29udGludWF0aW9uKQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9w
ZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0
ZXIgaXMgdW51c2VkLgorICAgIGNvbnRpbnVhdGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkK
K2VuZAorCittYWNybyB3aXRoT3V0T2ZMaW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFn
ZSwgY29udGludWF0aW9uKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vb
b2JqZWN0XSwgcHJvcGVydHlTdG9yYWdlCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBwcm9wZXJ0
eVN0b3JhZ2UgcmVnaXN0ZXIgbm93IHBvaW50cyB0byB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3Jh
Z2UsIGFuZCB0aGF0IHRoZSBvYmplY3QgcmVnaXN0ZXIgbWF5IGJlIHJldXNlZAorICAgICMgaWYg
dGhlIG9iamVjdCBwb2ludGVyIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KKyAgICBjb250aW51YXRp
b24ocHJvcGVydHlTdG9yYWdlLCBvYmplY3QpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoK
KyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9nZXRfYnlfaWRf
b3V0X29mX2xpbmU6CisgICAgZ2V0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxp
bnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CkBAIC0xMTMwLDY4ICsxMTY2LDk2IEBAIF9sbGlu
dF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9v
cF9wdXRfYnlfaWQ6CittYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0MQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0
QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxvYWRpIDIwW1BDXSwgdDEKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQotICAgIHdyaXRlQmFycmllcih0MCwgdDIpCi0g
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFt0MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisg
ICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwg
c2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCBzY3JhdGNoLCB0MikKKyAgICAgICAgICAg
IHdyaXRlQmFycmllcihzY3JhdGNoLCB0MikKKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBU
YWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkK
KyAgICAgICAgZW5kKQorZW5kCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3Bf
cHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdl
KQogCi1tYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorCittYWNybyBw
dXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BD
XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAs
IC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNr
cyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQog
ICAgIGxvYWRpIDIwW1BDXSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDIsIHQxLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQotICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W3QzXQotICAgIGxvYWRpIDI0W1BDXSwgdDEKLSAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbdDNdCi0gICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQotICAg
IGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAg
ICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3JhZ2UsIHQzCisgICAgICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQx
LCB0MikKKyAgICAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgICAgICAgICAg
bG9hZGkgMjRbUENdLCB0MQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Qz
XQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAg
ICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRpb25h
bENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJlQ2hh
aW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9s
ZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUg
cHJvdG8KKworICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2sp
IGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0
b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNo
LCBvayBlbmQpCisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisubG9vcDoKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAg
IGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFkZHAg
NCwgc2NyYXRjaAorICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRb
b2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8g
KG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNp
dGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24o
Ci0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAg
ICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCi0gICAgICAgIAotICAgICAgICAgICAgbG9hZHAg
MjhbUENdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3Jh
dGNoLCBvayBlbmQpCi0gICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jb
c2NyYXRjaF0sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNj
cmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQotICAgICAgICAubG9vcDoK
LSAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAotICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKLSAgICAgICAgICAgIGJwbmVxIG9sZFN0
cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Ci0gICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKLSAg
ICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0gICAgICAgIGVuZCkKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aElubGluZVN0b3Jh
Z2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGlu
ZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aE91dE9m
TGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBAIC0xMjYxLDkgKzEzMjUs
OCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAK
ICAgICBzdWJpIDEsIHQwCiAgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
bnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdwotICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0
MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGFk
ZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9vZmZzZXRCYXNlW3QzXSwgdDAKKyAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQwLCB0MiwgdDEsIHQzKQogICAgIGxvYWRpIDRbUENd
LCB0MAogICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjE2MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJuUEMgPSBB
cmd1bWVudENvdW50ICsgVGEKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdzOEJpdEJ1
ZmZlciA9IDY0CiAKKyMgUHJvcGVydHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFMVUU2NAor
ICAgIGNvbnN0IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25zdCBJbmxp
bmVTdG9yYWdlQ2FwYWNpdHkgPSA2CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50cwogaWYg
SlNWQUxVRTY0CiAgICAgY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxNjM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNv
cHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAg
CiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09
IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxl
c3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAg
JGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/
IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECiAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyAr
NTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUg
PT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMg
ImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZp
eChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUu
bmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFk
ZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMjQgKzkzLDU0IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWwKICAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24g
PSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgor
ICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKKworICAgIFBy
b3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOwor
ICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpOwor
ICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRo
aXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBw
b2ludGVycy4KKyAgICAgICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7CisgICAgICAgIHZpc2l0b3Iu
Y29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNs
b3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTdG9yYWdlPih0ZW1wKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdl
LnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKKyAgICB9CisKKyAgICBp
ZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZp
c2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uOworI2VuZGlmCit9CiAKLSAgICBKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0ZpbmFs
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24g
PSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgor
ICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzLCB2aXNpdG9yKTsKIAotICAgIFBy
b3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+cHJvcGVydHlTdG9yYWdlKCk7Ci0g
ICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5
U3RvcmFnZVNpemUoKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwot
ICAgIGVsc2UgeworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0
T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9y
YWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25G
aW5hbE9iamVjdCgpOwogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRv
IHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5j
ZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7Ci0g
ICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJl
KCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICB2aXNpdG9y
LmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5z
bG90KCksIHN0b3JhZ2VTaXplKTsKICAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3Bl
cnR5U3RvcmFnZT4odGVtcCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fcHJvcGVydHlTdG9yYWdl
LnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKKyAgICAgICAgdGhpc09i
amVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5j
aGVja2VkKTsKICAgICB9CiAKICAgICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkKICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwogCisgICAg
c2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGluZVNpemVG
b3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoaW5saW5lU3Rv
cmFnZSgpLCBzdG9yYWdlU2l6ZSk7CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdmlzaXRv
ci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb247CiAjZW5kaWYKQEAgLTE1Myw4ICsxODMsOCBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgZm9yIChKU09iamVjdCogb2JqID0g
dGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAg
c2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5z
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAg
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKQEAgLTUxOSwxNyArNTQ5LDE3IEBAIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVj
dChKU0dsb2JhbERhdGEKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1
Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAg
ICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkK
KyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNTU5LDI1ICs1ODksMjIgQEAgU3RydWN0dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJp
dG9ySUQoSgogICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0
b3JhZ2UgSlNPYmplY3Q6Omdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNP
YmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6
ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogewogICAgIEFTU0VSVChuZXdTaXplID4gb2xk
U2l6ZSk7CiAKICAgICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJl
bHkgb24gc3RydWN0dXJlKCksIHNpbmNlCiAgICAgLy8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRs
ZSBvZiBhIHRyYW5zaXRpb24uCiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9y
YWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7CisgICAgUHJvcGVydHlTdG9yYWdlIG9sZFBy
b3BlcnR5U3RvcmFnZSA9IG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0
b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gMDsKIAotICAgIGlmIChpc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKSB7CisgICAgaWYgKCFvbGRQcm9wZXJ0eVN0b3JhZ2UpIHsKICAgICAgICAgLy8gV2Ug
aGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBi
bG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAg
ICAgIHZvaWQqIHRlbXAgPSBuZXdQcm9wZXJ0eVN0b3JhZ2U7CiAgICAgICAgIGlmICghZ2xvYmFs
RGF0YS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPikgKiBuZXdTaXplLCAmdGVtcCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBu
ZXdQcm9wZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwot
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpCi0gICAgICAg
ICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBvbGRQcm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFr
ZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlw
ZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3Jh
Z2U7CkBAIC01OTQsOCArNjIxLDggQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKAogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2Vs
bCA9IDA7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7Ci0gICAgaWYg
KG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgY2VsbCk7CisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKG9iamVjdC0+
Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJpYnV0ZXMpOwogICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAx
MjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSwxNCArNzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNj
ZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAg
fTsKIAotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcmFnZUNhcGFjaXR5IDYKLSNlbHNlCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3Rv
cmFnZUNhcGFjaXR5IDQKLSNlbmRpZgotCi1DT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gMCksIGZpbmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsK
LQogICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKQEAgLTE2OSwyNiArMTYxLDcyIEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKICAgICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUg
cHJvcGVydHkgbWFwLgogICAgICAgICBKU1ZhbHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQg
PyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9CiAKICAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgICAgICB7
Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZv
dW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQg
PyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCiAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0
ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbjsKLSAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQp
IDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9u
KTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9u
Rm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBoYXNJbmxp
bmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0lubGluZVN0b3JhZ2Uo
KTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxDb25zdFBy
b3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3Rv
cmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAg
ICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhh
c0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2Fm
ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBv
dXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgp
OyB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4g
bV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0
b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CiAgICAgICAgIH0KIAotICAgICAgICBz
aXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b24pIGNvbnN0CisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9y
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGxvY2F0aW9uIC0gcHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgICAgICBpZiAoaXNJbmxp
bmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2Uo
KVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91
dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAg
ICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgcmVzdWx0OworICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluSW5s
aW5lU3RvcmFnZSA9IGxvY2F0aW9uIC0gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICAg
ICAgaWYgKG9mZnNldEluSW5saW5lU3RvcmFnZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oaW5saW5l
U3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBvZmZzZXRJbklubGlu
ZVN0b3JhZ2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9j
YXRpb24gLSBvdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChy
ZXN1bHQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CkBAIC0yMDUsOSArMjQzLDkgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0
eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0g
ICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0
dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBwdXRE
aXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1Zh
bHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRo
aXMsIHZhbHVlKTsgfQotICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNp
emVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsg
fQorICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
IGNvbnN0IHsgcmV0dXJuIGxvY2FsRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9CisgICAgICAg
IHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkt
PnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRVbmRlZmlu
ZWRBdERpcmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKQEAg
LTIyOCwyNCArMjY2LDE2IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3IKICAgICAgICAgYm9vbCBzdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0
dXJlKCktPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsgfQogICAgICAgICB2b2lkIHJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYyk7CiAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUHJvcGVydHlTdG9yYWdlIGdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxE
YXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1Vz
aW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0KLSAgICAgICAgICAgICAgICAhbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkKLSAgICAgICAg
ICAgICAgICB8fCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0
KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0aGlzICsgMSk7Ci0gICAgICAgICAgICBB
U1NFUlQocmVzdWx0ID09IHN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRQcm9w
ZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlTdG9yYWdlIGdyb3dPdXRPZkxpbmVT
dG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Cisg
ICAgICAgIHZvaWQgc2V0T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0
b3JhZ2UsIFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgYm9vbCByZWFsbG9jYXRlU3Rv
cmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNz
YXJ5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHZvaWQqIGFkZHJlc3NP
ZlByb3BlcnR5U3RvcmFnZSgpCisgICAgICAgIHZvaWQqIGFkZHJlc3NPZk91dE9mTGluZVN0b3Jh
Z2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJm1fcHJvcGVydHlTdG9yYWdlOwor
ICAgICAgICAgICAgcmV0dXJuICZtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKQEAgLTI2MSw3ICsyOTEsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxp
bmVTdG9yCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCk7Ci0gICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKTsKKyAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKTsKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkluaGVyaXRvcklEKCk7CiAKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTI4
Nyw3ICszMTcsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAK
ICAgICAgICAgLy8gVG8gaW5zdGFudGlhdGUgb2JqZWN0cyB5b3UgbGlrZWx5IHdhbnQgSlNGaW5h
bE9iamVjdCwgYmVsb3cuCiAgICAgICAgIC8vIFRvIGNyZWF0ZSBkZXJpdmVkIHR5cGVzIHlvdSBs
aWtlbHkgd2FudCBKU05vbkZpbmFsT2JqZWN0LCBiZWxvdy4KLSAgICAgICAgSlNPYmplY3QoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwor
ICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgcmVzZXRJbmhlcml0b3JJRCgpCiAgICAgICAgIHsKQEAgLTMwNSwxOSArMzM1
LDYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB2
b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsKICAgICAgICAgCi0gICAg
ICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9w
ZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQotCi0gICAg
ICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNp
emVfdCBvZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAgfQotCi0gICAgICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAg
fQotCiAgICAgICAgIHRlbXBsYXRlPFB1dE1vZGU+CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50
ZXJuYWwoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
LCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKIApAQCAtMzI3LDcgKzM0NCw3IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgY29uc3QgSGFzaEVu
dHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25z
dDsKICAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsK
IAotICAgICAgICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgU3Rv
cmFnZUJhcnJpZXIgbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2luaGVyaXRvcklEOwogICAgIH07CiAKQEAgLTM1MywxNCArMzcwLDE0IEBAIENP
TVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIDApCisgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAgICAgICAgICAgQVNTRVJUKCF0aGlz
LT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBB
U1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAg
ICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzgxLDYg
KzM5OCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZz
X2luZm8pOwogICAgICAgICB9CiAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCiAgICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGlj
IGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpCkBAIC0zODgsMTEgKzQwNywxNCBAQCBDT01QSUxFX0FT
U0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuQ29t
bW9uKFNsb3RWaXNpdG9yJik7CisgICAgICAgIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1Rf
T0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUp
KSk7Ci0gICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPT0gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAg
ICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IGlu
bGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJl
KCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKICAg
ICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIApAQCAtNDAwLDEzICs0
MjIsMTMgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKICAgICAgICAg
ZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUsIG1faW5saW5lU3RvcmFnZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGluZVN0b3JhZ2VbSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHldOworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+IG1faW5saW5lU3RvcmFnZVtJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWV07CiAgICAgfTsK
IAogaW5saW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNDMxLDkgKzQ1Myw5IEBAIGlubGluZSBz
aXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3QKICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSk7CiB9CiAKLWlubGluZSBzaXplX3Qg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkKK2lubGluZSBzaXplX3QgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpCiB7Ci0gICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpOworICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNPYmplY3QsIG1fb3V0T2ZMaW5lU3RvcmFnZSk7CiB9CiAKIGlubGluZSBzaXplX3Qg
SlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKQpAQCAtNDcxLDE0ICs0OTMsMTggQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFsVGhpcygpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xvYmFsVGhpc1R5cGU7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUg
dm9pZCBKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAg
ICBBU1NFUlQoc3RvcmFnZSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFz
dHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkKLSAgICAgICAgICAgfHwgKGNsYXNzSW5m
bygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8gJiYgc3RhdGljX2Nhc3Q8dm9pZCo+KHN0b3Jh
Z2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpKTsKKyAgICBpZiAoIXN0b3JhZ2Up
IHsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAg
ICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9CiAgICAgc2V0U3RydWN0
dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGds
b2JhbERhdGEsIHRoaXMsIHN0b3JhZ2UpOworICAgIG1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0
RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUx
Niw5ICs1NDIsOSBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAg
ICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0
OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKK2lubGluZSBKU09iamVjdDo6SlNPYmpl
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6
IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZShn
bG9iYWxEYXRhLCB0aGlzLCBpbmxpbmVTdG9yYWdlKQorICAgICwgbV9vdXRPZkxpbmVTdG9yYWdl
KGdsb2JhbERhdGEsIHRoaXMsIDApCiB7CiB9CiAKQEAgLTU0MiwxOSArNTY4LDYgQEAgaW5saW5l
IFN0cnVjdHVyZSogSlNPYmplY3Q6OmluaGVyaXRvcklEKAogICAgIHJldHVybiBjcmVhdGVJbmhl
cml0b3JJRChnbG9iYWxEYXRhKTsKIH0KIAotaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0Ci17Ci0gICAgaWYgKGNsYXNzSW5mbygpID09ICZKU0Zp
bmFsT2JqZWN0OjpzX2luZm8pCi0gICAgICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJl
Ojppc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkgPj0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBw
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpOwotfQot
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29u
c3QKIHsKICAgICByZXR1cm4gY2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKQEAgLTYx
MSwxMCArNjI0LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8K
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
bmFtZS5pbXBsKCktPmhhc0hhc2goKQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBu
YW1lLmltcGwoKS0+aGFzSGFzaCgpCiAgICAgICAgICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBz
dHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChv
ZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0KQogICAgICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4
ICs2ODksOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAg
aWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJy
ZW50QXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsK
LSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwot
ICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlm
IChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
Y3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0
LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVz
cGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVj
aWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKQEAgLTcwMCwxMyArNzEz
LDE0IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAg
aWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHBy
b3BlcnR5U3RvcmFnZSgpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJv
cGVydHlTdG9yYWdlKCkpCi0gICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3Rv
cmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAg
ICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAg
ICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVj
dHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0
T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgICAgICBzZXRPdXRPZkxp
bmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAotICAgICAg
ICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OworICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJl
Y3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21t
ZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNG
dW5jdGlvbikKQEAgLTcxNCwxNSArNzI4LDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbCgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZV90
IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHNp
emVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsK
ICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewotICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOyAKLSAgICAgICAgaWYg
KGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
Ci0gICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
Ci0KLSAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBzdHJ1Y3R1cmUpOworICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91
dE9mTGluZVN0b3JhZ2UoKTsgCisgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dP
dXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKKworICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwor
ICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgp
KTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2
YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdp
dGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAv
LyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc0
OSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNp
Z25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0
aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlm
IChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJp
YnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcg
Kzc4Myw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChv
ZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkpOwogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnko
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRh
LCBvZmZzZXQsIHZhbHVlKTsKQEAgLTc4MSwyMiArNzk3LDIyIEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVj
dHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7Ci0g
ICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CisgICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSk7CiAgICAgCi0gICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgIGlmIChvbGRDYXBhY2l0eSA9PSBu
ZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgc2V0U3RydWN0dXJl
KGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKAot
ICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3
U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9
IGdyb3dPdXRPZkxpbmVTdG9yYWdlKAorICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwg
bmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9y
YWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSB2
b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAg
ICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKLSAgICAgICAg
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0
cnVjdHVyZSk7CisgICAgICAgIGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3du
RGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtODI0LDEx
ICs4NDAsMTEgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbAogaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3
U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2ls
bEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0
eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwotICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0
KHZhbHVlKSk7Ci0gICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2Us
IHN0cnVjdHVyZSgpKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGlu
ZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3Rv
cmFnZSgpKQorICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlU2l6ZSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Cisg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUo
KSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQog
CkBAIC05MDYsOCArOTIyLDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVj
U3RhdAogICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1Zh
bHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5F
IEpTT2JqZWN0KiBSZWdpc3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1
ZSgpKQpAQCAtOTIyLDYgKzkzNiwyNSBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVy
Ojp3aXRoQ2FsCiAgICAgcmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBh
dGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisv
LyB0aGUgYmFzZSBpczoKKy8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBv
dXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czog
dGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
aWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNl
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zm
c2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOwor
ICAgIEFTU0VSVCghKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShv
ZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTAgKzU2LDEwIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlO
YW1lSXQKICAgICBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3Ry
dWN0dXJlKCktPmhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgp
LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgp
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3Rz
ID0gby0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2Fj
aGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAog
ICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVh
cCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwg
bnVtQ2FjaGVhYmxlU2xvdHMpOwotICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAK
ICAgICBpZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4g
anNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTEgKzYzLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAotICAgICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwgaW50JiBvZmZzZXQpCisgICAg
ICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoaSA+PSBtX251bUNhY2hlYWJsZVNsb3RzKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG9mZnNldCA9IGk7CisgICAgICAg
ICAgICBvZmZzZXQgPSBpICsgbV9vZmZzZXRCYXNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIApAQCAtODgsMTIgKzg4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhKQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJh
eURhdGEsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICBQcm9wZXJ0eU5h
bWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJv
cGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9qc1N0cmluZ3NTaXplOyArK2kpCiAgICAgICAgICAgICAg
ICAgbV9qc1N0cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0
cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CisgICAgICAgICAg
ICBtX29mZnNldEJhc2UgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5maXJzdFZhbGlkT2Zmc2V0KCk7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC0xMDUsNiArMTA2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90
b3R5cGVDaGFpbjsKICAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVTbG90czsKICAgICAg
ICAgdWludDMyX3QgbV9qc1N0cmluZ3NTaXplOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29m
ZnNldEJhc2U7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1f
anNTdHJpbmdzOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw4IEBAIHZv
aWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBmb3IgKDsgOyBvYmog
PSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9i
ai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFi
bGUuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAog
I2lmbmRlZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRh
YmxlX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4K
QEAgLTcyLDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVk
IHYpCiAKIHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0g
ICAgdW5zaWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7
CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxs
KiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSkKICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAg
ICAgICwgYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc1LDcgKzE3Niw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZz
ZXQoKTsKICAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxl
dGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNl
dChKU1R5cGUgdHlwZSk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5zdXJp
bmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KICAgICBQYXNz
T3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHkoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwg
dW5zaWduZWQgbmV3Q2FwYWNpdHkpOwpAQCAtMjMwLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQqIG1faW5kZXg7CiAgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKICAgICB1bnNpZ25l
ZCBtX2RlbGV0ZWRDb3VudDsKLSAgICBPd25QdHI8IFZlY3Rvcjx1bnNpZ25lZD4gPiBtX2RlbGV0
ZWRPZmZzZXRzOworICAgIE93blB0cjwgVmVjdG9yPFByb3BlcnR5T2Zmc2V0PiA+IG1fZGVsZXRl
ZE9mZnNldHM7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWluaW11bVRhYmxlU2l6ZSA9
IDE2OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOwpAQCAt
MjY0LDkgKzI2Nyw5IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wK
ICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAgICBW
ZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zm
c2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZz
ZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVk
T2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8
dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNl
dHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2Jh
bERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFBy
b3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMjg4LDkgKzI5MSw5IEBAIGlubGluZSBQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0
ZWRPZmZzZXRzIHZlY3Rvci4KLSAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZz
ZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlP
ZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQo
KTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7
CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5
T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6flByb3BlcnR5VGFibGUoKQpAQCAtNDY5LDIwICs0NzIsMzEgQEAgaW5saW5lIGJvb2wgUHJv
cGVydHlUYWJsZTo6aGFzRGVsZXRlZE9mZgogICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYm
ICFtX2RlbGV0ZWRPZmZzZXRzLT5pc0VtcHR5KCk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBQcm9w
ZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9w
ZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIHsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBt
X2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9k
ZWxldGVkT2Zmc2V0cy0+bGFzdCgpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3Qo
KTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjph
ZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKK2lubGluZSB2b2lkIFByb3BlcnR5VGFi
bGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICgh
bV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5l
dyBWZWN0b3I8dW5zaWduZWQ+KTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBl
bmQob2Zmc2V0KTsKIH0KIAoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6Om5l
eHRPZmZzZXQoSlNUeXBlIHR5cGUpCit7CisgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKKyAg
ICAgICAgcmV0dXJuIGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICAKKyAgICBpZiAodHlwZSA9PSBG
aW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBzaXplKCk7CisgICAgCisgICAgcmV0dXJu
IHNpemUoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCiBpbmxpbmUgUGFzc093blB0cjxQ
cm9wZXJ0eVRhYmxlPiBQcm9wZXJ0eVRhYmxlOjpjb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKG5l
d0NhcGFjaXR5ID49IG1fa2V5Q291bnQpOwpAQCAtNDk5LDcgKzUxMyw3IEBAIGlubGluZSBzaXpl
X3QgUHJvcGVydHlUYWJsZTo6c2l6ZUluTWVtb3IKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gc2l6
ZW9mKFByb3BlcnR5VGFibGUpICsgZGF0YVNpemUoKTsKICAgICBpZiAobV9kZWxldGVkT2Zmc2V0
cykKLSAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICogc2l6
ZW9mKHVuc2lnbmVkKSk7CisgICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2Fw
YWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zm
c2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlPZmZzZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvcGVydHlP
ZmZzZXRfaAorI2RlZmluZSBQcm9wZXJ0eU9mZnNldF9oCisKKyNpbmNsdWRlICJKU1R5cGUuaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisjZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBJTkxJ
TkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBB
Q0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7CisKK3N0YXRpYyBj
b25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7CitzdGF0aWMgY29uc3QgUHJv
cGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gSU5MSU5FX1NUT1JBR0VfQ0FQQUNJ
VFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBBU1NFUlQo
b2Zmc2V0ID49IGludmFsaWRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIFVOVVNFRF9QQVJBTShv
ZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IGlu
dmFsaWRPZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNldAorICAgICAg
ICAgICB8fCB0eXBlID09IEZpbmFsT2JqZWN0VHlwZQorICAgICAgICAgICB8fCBpc091dE9mTGlu
ZU9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJU
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQo
b2Zmc2V0LCB0eXBlKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKK30KKwor
aW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQ7
Cit9CisKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
K3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgPCBpbmxpbmVT
dG9yYWdlQ2FwYWNpdHk7Cit9CisKK2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVy
biAhaXNJbmxpbmVPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbklu
bGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0
KG9mZnNldCk7CisgICAgQVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVy
biBvZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAg
IEFTU0VSVChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0IC0g
Zmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0
aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0
KTsKKyAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lu
bGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNl
dCA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
b2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQgKyAxOworfQorCitpbmxpbmUgc2l6ZV90IG51
bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5
cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBG
aW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyAxOworICAgIHJldHVybiBu
dW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUg
UHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBp
ZiAodHlwZSAhPSBGaW5hbE9iamVjdFR5cGUgJiYgb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCisg
ICAgICAgIHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICByZXR1cm4gb2Zmc2V0ICsg
MTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IoSlNU
eXBlIHR5cGUpCit7CisgICAgcmV0dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZvcihpbnZhbGlkT2Zm
c2V0LCB0eXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm9wZXJ0
eU9mZnNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUg
IlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtODksNyArOTAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hlZFByb3Bl
cnR5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9CiAgICAgICAg
IGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSAh
PSBVbmNhY2hlYWJsZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQotICAgICAgICBzaXplX3Qg
Y2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUs
IHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwg
SlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEpTQ19WQUxVRV9N
QVJLRVI7CkBAIC0xNjAsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBt
X2RhdGEuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmMsIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJT
bG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJGdW5jKTsKICAg
ICAgICAgICAgIG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwpAQCAtMjA2LDcg
KzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDbGVh
ciBvZmZzZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFByb3BlcnR5U2xv
dCBoYXMgYmVlbiB1c2VkIGJlZm9yZS4KICAgICAgICAgICAgIC8vIChGb3Igb3RoZXIgZGF0YSBt
ZW1iZXJzLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2UgcmV1c2Ugd291
bGQgbWVhbmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgIG1f
Y2FjaGVkUHJvcGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgIH0KIApAQCAtMjMyLDcg
KzIzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAg
ICAgIEpTVmFsdWUgbV90aGlzVmFsdWU7CiAKLSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBl
IG1fY2FjaGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJh
c2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09i
amVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX3R5cGUgPSBFeGlzdGluZ1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsK
ICAgICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAg
dm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAgICAgICAg
ICAgIG1fYmFzZSA9IGJhc2U7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7
IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBV
bmNhY2hhYmxlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKICAgICAgICAgICAgIEFT
U0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICAg
ICAgfQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKLSAgICAgICAgc2l6
ZV90IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Niw4ICsxNTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAg
ICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2Ns
YXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRp
YWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZv
LmlzRmluYWxPYmplY3QoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDog
MCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgw
KQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQo
Tm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2Up
CiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0xNzksOCArMTc5
LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9w
cm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbygm
c19pbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNo
aW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAgICwgbV9vZmZzZXQo
bm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChp
bnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQp
CiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBTdHJ1Y3R1cmU6OlN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRh
LCB0aGlzLCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhw
cmV2aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElu
aXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHByZXZp
b3VzLT5tX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQp
CisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291dE9mTGluZUNhcGFjaXR5
KQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQo
cHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJs
ZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2aW91cy0+bV9o
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RydWN0
dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPm1fcHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9w
cmV2aW91cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9w
cm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CisgICAgICAg
ICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShn
bG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3Ry
dWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobV9vZmZzZXQgKyAxKTsKKyAg
ICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZz
ZXQpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkg
Pj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYs
MjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAg
ICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXpl
X3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNh
cGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNp
dHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwog
fQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQg
U3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9y
YWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3Vn
Z2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJl
dHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwog
fQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyAr
Mjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVu
dHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjph
ZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NF
UlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9
IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAg
ICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZp
b3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNT
RVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2
YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5
cGUoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7CiAg
ICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4g
MDsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBh
IHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVy
ZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVy
dHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5z
aXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVj
dHVyZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAg
IG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5zaXRp
b24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5z
aXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93
T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQog
ICAgIApAQCAtMzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmlj
VmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KTsKLSAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlv
bi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNp
emUoKSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5zaXRp
b24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQg
PSBvZmZzZXQ7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0
YSwgdHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6
ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTgg
KzU0OCwxOSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAg
ICAgICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAg
ICAgICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAK
ICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zm
c2V0ID0gZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAg
IFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAg
ICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJs
ZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1
ZXNbaV0gPSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAg
ICAgLy8gVXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZz
ZXRzCi0gICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zm
c2V0ID0gaSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBD
b3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlv
bnMKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykK
LSAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVl
c1tpXSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBm
aXJzdE9mZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5j
bGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAot
c2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3
OSwxMyArNTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4K
ICAgICAKICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVl
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgaWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
Ci0gICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4gb3V0
T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAg
cmV0dXJuIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBB
U1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90IFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNldDsK
KyAgICByZXR1cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpw
aW4oKQpAQCAtNjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1
Y3R1cmU6OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVBy
b3BlcnR5VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBvd25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFBy
b3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFBy
b3BlcnR5VGFibGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFs
RGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVy
T2ZTbG90c0Zvckxhc3RPRmZzZXQobV9vZmZzZXQpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlP
ZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8p
OwogCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwog
ICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsK
KyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBl
bnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0Owog
ICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICBy
ZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRl
czsKICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02
ODUsOSArNjg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwog
ICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1
cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIWlzVmFsaWRPZmZz
ZXQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAtNjk4LDEyICs2OTgsNyBA
QCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAgICAgaWYgKCFtX3By
b3BlcnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKCk7CiAKLSAgICB1bnNpZ25l
ZCBuZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0
KCkpCi0gICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+Z2V0RGVsZXRlZE9mZnNl
dCgpOwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXpl
KCk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5uZXh0
T2Zmc2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFBy
b3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDcgKzcwNiw3IEBAIHNpemVfdCBTdHJ1Y3R1
cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1z
aXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3Bl
cnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC03MjQsNyArNzE5LDcgQEAgc2l6ZV90IFN0
cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcgogICAgIGlmICghcG9zaXRpb24uZmlyc3Qp
CiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwb3NpdGlv
bi5maXJzdC0+b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHBvc2l0aW9uLmZp
cnN0LT5vZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92ZShwb3NpdGlvbik7CiAg
ICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNldCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTIxNjM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOwogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rp
b25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSk7CiAg
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
QEAgLTEwMywzMiArMTAzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzRnJv
emVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsg
cmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgICAgIGJvb2wgZGlkVHJhbnNpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQotICAgICAgICBib29sIHB1dFdp
bGxHcm93UHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGlu
ZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJU
KG91dE9mTGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjdXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IGN1cnJl
bnRTaXplKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9
IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGluZUNhcGFjaXR5KCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
KTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVy
dHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChtX3Byb3Bl
cnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBt
X3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAg
ICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxl
LT5zaXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09
IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKTsgCisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkoKTsgCiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0
aW9uLiAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZVByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZVBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAg
ICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRh
LCB0aGlzLCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGljdGlvbmFy
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9uZURpY3Rpb25hcnlLaW5k
OyB9CkBAIC0xNDksMTggKzE0OSwxMDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVj
dHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAg
IFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAg
U3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3ByZXZpb3VzLmdldCgpOworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2
ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAg
ICAgdm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQg
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9
Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRh
YmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6ZV90IGlubGluZVN0b3Jh
Z2VDYXBhY2l0eSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkg
Y29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUp
OwotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUp
OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUp
OworICAgICAgICB2b2lkIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICB1bnNpZ25l
ZCBvdXRPZkxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1
cm4gbV9vdXRPZkxpbmVDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRP
ZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRv
dGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAg
ICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUg
LSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAg
ICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgp
ICE9IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNp
emUoKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJP
Zk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAg
ICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAg
ICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxT
aXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eSgpOworICAgICAg
ICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGlu
ZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0
T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBi
b29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlOworICAgICAgICB9CisgICAg
ICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5l
U3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAg
ICAgdW5zaWduZWQgaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RU
eXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3By
b3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgaWYgKHJlc3VsdCA+IGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFj
aXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJ
bmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU2l6ZUtub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZT
bG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVk
IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX291dE9mTGluZUNhcGFjaXR5ICsgaW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAg
ICAgICAgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZzZXQoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAg
ICAgICAgUHJvcGVydHlPZmZzZXQgc2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9y
YWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICghaGFzSW5saW5lU3RvcmFnZSgpKQorICAg
ICAgICAgICAgICAgICAgICBzaXplICs9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2l6ZSAtIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gbV9vZmZzZXQ7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpT
R2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICAgICAgYm9v
bCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMTc3LDcgKzI2OCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc05vbkVudW1lcmFibGVQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllczsgfQog
ICAgICAgICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNl
dDsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5
VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiAhaXNWYWxpZE9mZnNldChtX29m
ZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Bl
Y2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAg
ICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBA
IC0yNzMsOCArMzY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtp
bmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVf
dCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92
ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5
TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3Vu
dCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICszOTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlv
bnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0
cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9v
ZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJu
IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAg
ICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90
eXBlQ2hhaW4pIGNvbnN0OwpAQCAtMzEwLDggKzQwNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7CiAKLSAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBub09mZnNldCA9IC0xOwotCiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwogCiAgICAg
ICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CkBAIC0zMzYsMTAgKzQzMCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIG11dGFibGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3Ry
YW5zaXRpb25XYXRjaHBvaW50U2V0OwogCi0gICAgICAgIHVpbnQzMl90IG1fcHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHk7CisgICAgICAgIHVpbnQzMl90IG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CiAKICAg
ICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCi0g
ICAgICAgIGludCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAK
ICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgICAgIGJvb2wgbV9p
c1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwpAQCAtMzUzLDI2ICs0NDcsMjYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07
CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0Owog
CiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5k
KHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5
LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNl
dCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAg
aW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFi
bGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52
YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVy
dHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0OwotICAgICAgICByZXR1
cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRy
eSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KICAgICAKICAgICBpbmxp
bmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150530</attachid>
            <date>2012-07-02 21:40:50 -0700</date>
            <delta_ts>2012-07-02 22:40:41 -0700</delta_ts>
            <desc>wrote some 64-bit thingies</desc>
            <filename>overflowstorage_patch_8.diff</filename>
            <type>text/plain</type>
            <size>204772</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NiBA
QAorMjAxMi0wNy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhM
b2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhB
ZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6
CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6
cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRM
b2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAg
ICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29k
ZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3Bl
cnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAg
ICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5
VG9TdHViSW5mbyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm86OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNo
R2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlk
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAg
ICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20veDg2LnJiOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
cm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRE
aXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpoYXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0
b3JhZ2VVbnNhZmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9m
ZnNldEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
Tm9uRmluYWxPYmplY3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZp
bmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0ZpbmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRP
dXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjppbmRleFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFBy
b3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0
eU1hcEVudHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
Z2V0RGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJ
bmxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAg
IChKU0M6Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNl
dEZvcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6
OnNldFZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAg
ICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVy
dHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlT
bG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2Fj
aGVkT2Zmc2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAg
IChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25O
b25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppbmxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0Vt
cHR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTItMDctMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgT1NSIGV4aXQgdmFsdWUgcmVjb3ZlcmllcyBz
aG91bGQgYmUgY29tcHV0ZWQgbGF6aWx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2Miw2ICs1NjIsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwg
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBsYWJlbCgp
OworICAgIH0KICNlbmRpZgogICAgIAogICAgIExhYmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs2Nzcs
MTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJl
YWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKKyAg
ICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9j
YXRpb24oKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0
aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDI0IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0
aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZXBs
YWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
KyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNB
Y3RpdmUoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwsIGJvb2wgaXNBY3RpdmUpCisgICAgeworICAg
ICAgICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAgICByZXBsYWNlV2l0aExvYWQobGFiZWwpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihs
YWJlbCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiA1OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAg
ICAgICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRy
Kys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9W
X0d2RXY6CisgICAgICAgICAgICAqcHRyID0gT1BfTEVBOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJl
bCBjYWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRC
eUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdl
dF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVh
azsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
c2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtNDkxLDcgKzQ5NCw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4KICAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczog
JXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJU
b1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJU
b1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkpIHsKKyAgICAgICAgaWYgKHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkgfHwgdlBDWzBdLnUu
KSB7CiAgICAgICAgIHByaW50U3RydWN0dXJlKCJwdXRfYnlfaWQiLCB2UEMsIDQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTAzMyw2ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46CkBAIC0x
MDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBj
bwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAg
ICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfcmVw
bGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9v
dXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwogICAgICAgICAgICAg
c3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAg
ICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBAIC0yMDM5
LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rf
b3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICYm
IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQogICAg
ICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0
cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9t
CiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVl
KTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChv
ZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxz
ZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwgU3RydWN0
dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3ICs4OCw3
IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICAgICAgCiAg
ICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNp
ZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYg
KCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAtMTU2LDEy
ICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
ICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lm
aWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZv
dW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpIHsKICAg
ICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5k
KQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICAgICAgc2l6ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
CiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0
dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQobXlPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90
Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xOTYsNyAr
MTk2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZv
dW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlQocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKCFpc1Zh
bGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Ci0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCkgeworICAgIGlmICghaXNWYWxp
ZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gVGFr
ZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7CiAgICAg
ICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgR2V0QnlJZFN0YXR1c19oCiAjZGVmaW5lIEdldEJ5
SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIApAQCAtNDYsMTMgKzQ3LDEz
IEBAIHB1YmxpYzoKIAogICAgIEdldEJ5SWRTdGF0dXMoKQogICAgICAgICA6IG1fc3RhdGUoTm9J
bmZvcm1hdGlvbikKLSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29m
ZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgR2V0QnlJZFN0YXR1
cygKICAgICAgICAgU3RhdGUgc3RhdGUsIGJvb2wgd2FzU2VlbkluSklULCBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNldCgpLAotICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gbm90Rm91bmQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9y
PFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCisgICAgICAgIHNpemVf
dCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVl
KCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQogICAg
ICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJl
U2V0KQogICAgICAgICAsIG1fY2hhaW4oY2hhaW4pCkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RydWN0dXJlU2V0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNv
bnN0IHsgcmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYgdGhpcyBp
cyBhIGRpcmVjdCBhY2Nlc3MuCiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNWYWx1ZSgpIGlmIHRoZXJlIGlz
IG5vIHNwZWNpZmljIHZhbHVlLgotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
b2Zmc2V0OyB9CiAgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBt
X3dhc1NlZW5JbkpJVDsgfQogICAgIApAQCAtODgsNyArODksNyBAQCBwcml2YXRlOgogICAgIFN0
cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBWZWN0b3I8U3RydWN0dXJlKj4gbV9jaGFp
bjsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7Cisg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBt
YWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF90aGlzLCA1KSAvKiBoYXMgdmFsdWUgcHJv
ZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkLCA5KSAvKiBoYXMgdmFsdWUg
cHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX291dF9vZl9saW5lLCA5
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lk
X3NlbGYsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9n
ZXRfYnlfaWRfcHJvdG8sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBt
YWNybyhvcF9nZXRfYnlfaWRfY2hhaW4sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApA
QCAtMTIyLDkgKzEyMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0
X3N0cmluZ19sZW5ndGgsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBt
YWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWQsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX291dF9vZl9saW5lLCA5KSBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCisgICAgICAgIG1hY3Jv
KG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBAIFB1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBpZiAoIXN0cnVjdHVyZSkK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOwogICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9v
cF9wdXRfYnlfaWQpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCA9
PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfcHV0X2J5X2lkCisgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
ID09IGxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkgeworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCk7CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9m
ZnNldCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBs
YWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3LDE4IEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAg
ICAKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0Ci0gICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bj
b2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAg
IHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUKKyAgICAgICAgICAg
fHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsX291dF9vZl9saW5lKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNoYWluKTsKICAgICAKLSAgICBzaXplX3Qg
b2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwg
aWRlbnQpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZz
ZXQpOwogICAgIAogICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0
cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKICNlbHNlCkBAIC05NCwyNCAr
OTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBp
ZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0g
ICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1Yklu
Zm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZz
ZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewog
ICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxl
UmVwbGFjZSwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VP
YmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAg
ICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAg
Y2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CiAgICAgICAgIEFTU0VS
VChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0
aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24u
c3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYg
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICBz
dHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLApAQCAt
MTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0
KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZz
ZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsK
ICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5lIFB1dEJ5SWRTdGF0dXNfaAogCisj
aW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX29s
ZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKDApCiAgICAgICAgICwgbV9z
dHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAs
IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTY0LDcgKzY1
LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1
cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1
cmUob2xkU3RydWN0dXJlKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkK
QEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9J
bmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09ICFtX29sZFN0cnVjdHVy
ZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9u
ZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlv
bikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9J
bmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBu
b3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBt
X3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOwpAQCAtOTAsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJl
Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNoYWluOyB9Ci0gICAgc2l6ZV90IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgog
ICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVj
dHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1cmVDaGFpbjsKLSAgICBzaXplX3Qg
bV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsOSArMzYsOSBAQCBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRl
Rm9yU3RyCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKmNvZGVCbG9j
ay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNW
YWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZz
ZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoKTsKICAgICAK
ICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhSZXNvbHZlR2xvYmFsU3RhdHVzOjpTaW1w
bGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2
aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVH
bG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBS
ZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQ
cm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBSZXNvbHZl
R2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAgIFN0YXRlIHN0YXRlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZz
ZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSkKICAgICAgICAg
OiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKQEAgLTcw
LDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9CiAgICAgCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQotICAgIHNpemVfdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgU3Rh
dGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwotICAgIHNpemVfdCBtX29m
ZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBKU1ZhbHVlIG1fc3BlY2lm
aWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5zaXplKCk7IH0KICAgICAKLSAg
ICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJlc1tpXS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8vIENhbGwgdGhpcyBpZiB5b3Uga25vdyB0aGF0
IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lzdCBvZiBleGFjdGx5CiAgICAgLy8gb25lIHN0
cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvblN0cnVjdHVyZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7CiAgICAgICAg
ICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFI7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb0RvbmU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKICAg
ICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7CiAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNoZWNrSW1tVG9DYWxsOwpAQCAtMjE5LDYgKzIyMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQxNl90IHN0cnVjdHVyZUNoZWNrOworICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTIzMCw2
ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgfSBnZXQ7CiAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQx
Nl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
cHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihib29sIHVzZXNSZXN1bHQsIGludCByZXN1bHRP
cGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgIGlu
dCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAgICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBz
aXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKICAgICB2b2lk
IGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAg
ICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAg
ICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJh
c2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAg
ICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQs
CiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1f
Z3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vz
c0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0g
b2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGlu
ZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlm
aWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vz
c0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAg
ICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9v
bCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1w
dHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3Rh
dHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVj
dCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdl
dEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVU
cmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAg
IH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBn
ZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9y
YWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAg
ICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtl
cHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVH
ZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNl
LCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3Rh
dHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBi
YXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMjU5LDIwICsyMjUw
LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2lt
cGxlUmVwbGFjZSgpKSB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVy
ZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0
dXJlKCkpKSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAg
ICAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAg
IGlmIChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zm
c2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSkpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2Yo
SlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VB
Y2Nlc3NEYXRhLnNpemUoKSksIHByb3BlcnR5U3RvcmFnZSwgYmFzZSwgdmFsdWUpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nl
c3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IHB1dEJ5
SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAgICAgc3RvcmFn
ZUFjY2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShwdXRCeUlkU3RhdHVzLm9m
ZnNldCgpKTsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVt
YmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc3RvcmFn
ZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIWhhc0V4aXRTaXRlCkBAIC0yMzA4LDE2ICsyMjk0LDExIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSkpKSwKICAgICAgICAgICAgICAgICAgICAg
YmFzZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9m
ZnNldDsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAg
ICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5l
U3RvcmFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRT
dGF0dXMub2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBi
YXNlOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQg
PSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwot
ICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgICAgICBQdXRCeU9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNz
RGF0YS5zaXplKCkpLApAQCAtMjMyNiw3ICsyMzA3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vz
c0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJ
ZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdl
QWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zm
c2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1i
ZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdl
QWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTI3MzgsOCArMjcxOSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBo
YW5kbGVHZXRCeU9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5zdHJ1Y3R1cmUoKS0+aXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5vZmZzZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMub2Zm
c2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBtX2dsb2JhbFJlc29sdmVOdW1iZXIrKzsgLy8gU2tpcCBvdmVyIHRoZSB1bnVzZWQgZ2xv
YmFsIHJlc29sdmUgaW5mby4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICNlbmRpZgogICAg
ICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJv
cGVydHlBY2Nlc3Nlc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7CiAgICAgICAg
IGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9kb25lKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlTdG9y
YWdlTG9hZCkpOwogICAgICAgICBpbmZvLnBhdGNoLmRmZy5iYXNlR1BSID0gbV9wcm9wZXJ0eUFj
Y2Vzc2VzW2ldLm1fYmFzZUdQUjsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBh
dGNoLmRmZy52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVj
b3JkIHsKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBwcm9wZXJ5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxDb21wYWN0IGxvYWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1Bh
dGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4
LDYgKzE0OSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBz
dHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVj
dHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHJvcGVyeVN0b3JhZ2VM
b2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkT3JT
dG9yZSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExv
YWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3Is
CkBAIC0xNjEsNiArMTYzLDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAg
ICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKICAgICAgICAgLCBtX3N0cnVjdHVyZUltbShz
dHJ1Y3R1cmVJbW0pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykK
KyAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAsIG1fbG9hZE9yU3RvcmUobG9hZE9yU3RvcmUpCiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTgyLDYgKzE4NSw3IEBAIHN0cnVjdCBQcm9wZXJ0
eUFjY2Vzc1JlY29yZCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNrOworICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBtX2xvYWRPclN0b3JlOwogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNw
cAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBkZmdS
ZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbCwg
bmV3Q2FsbGVlRnVuY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZB
Y2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZz
bG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3QpCitzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJ
ZFNlbGZBY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3Qg
RnVuY3Rpb25QdHIgJnNsb3dQYXRoRnVuY3Rpb24sIGJvb2wgY29tcGFjdCkKIHsKICAgICBSZXBh
dGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTIsMTggKzUyLDE5IEBA
IHN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2QKIAogICAgIC8vIFBhdGNo
IHRoZSBzdHJ1Y3R1cmUgY2hlY2sgJiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRy
QXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0ltbVRvQ2Fs
bCksIHN0cnVjdHVyZSk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0Fj
dGl2ZShzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNl
dCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCi0gICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwg
c2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkg
KiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7CiAgICAgZWxzZQotICAg
ICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRh
dGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3Rv
cmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkg
KiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7CiAjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgIGlmIChjb21wYWN0KSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpT
VmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zm
c2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1
ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9U
YWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBz
aXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICog
b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6
ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsK
ICAgICB9CiAjZW5kaWYKIH0KQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVz
dG9yZVNjcmF0Y2goTGlua0J1ZmZlCiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVy
LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKIH0KIAotc3RhdGlj
IHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291
bnQsIHNpemVfdCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJl
bCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCitzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVs
LCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYm
IHN0dWJSb3V0aW5lKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CiAKQEAgLTEzOSwxMyArMTQwLDIzIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRl
UHJvdG9DaGFpbkFjY2Vzc1N0dWIKICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsK
ICAgICB9CiAgICAgCi0gICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zm
c2V0KSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPikpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFic29sdXRlQWRkcmVzcyhwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KSksIHJlc3VsdEdQUik7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAgIHN0dWJKaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHByb3RvT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOworICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2Vu
ZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5h
ZGRyZXNzT2ZPdXRPZkxpbmV0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAg
fQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTU2
Nyw3ICs1NzgsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgCiAgICAg
TWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAgICAKLSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZh
bGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgIXN0cnVjdHVyZS0+aXNVc2luZ0lu
bGluZVN0b3JhZ2UoKSkpIHsKKyAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYm
ICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgaXNPdXRPZkxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpKSB7CiAgICAgICAgIHNjcmF0Y2hHUFIgPSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2Ny
YXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7CiAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNo
ID0gdHJ1ZTsKICAgICAgICAgc3R1YkppdC5wdXNoKHNjcmF0Y2hHUFIpOwpAQCAtNTg2LDIwICs1
OTcsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogI2VuZGlmCiAgICAgCiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFn
ZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90
LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVk
T2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9
CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdl
KCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBz
dHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkg
KyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgp
KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7
CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC02ODUsMjAgKzY5NiwyMCBAQCBzdGF0aWMgdm9pZCBl
bWl0UHV0VHJhbnNpdGlvblN0dWIoCiAKICAgICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJK
aXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSkpOwogICAgIGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBz
Y3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRj
aEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAg
ICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkp
OworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAg
ICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAg
ICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBz
dHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIG9mZnN0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAg
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwNSw2ICs1MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCisgICAgSklUQ29tcGlsZXI6OkxhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJX
aXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQ
YXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0
IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zm
c2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWRHUFIpOwpAQCAtNTQ3LDcgKzU0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAg
ICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0
dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAg
ICAgICAgICAgICB0YWdMb2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1Bh
dGguZ2V0KCksIGRvbmVMYWJlbCwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBh
eWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBz
YWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0
Y2hHUFIpLApAQCAtNTYyLDYgKzU2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdH
UFIsIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7
CiAKKyAgICBKSVRDb21waWxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0Lmxh
YmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpKSwgc2NyYXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHRhZ1N0b3Jl
V2l0aFBhdGNoID0gbV9qaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVUYWdH
UFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIEpJVENvbXBpbGVyOjpEYXRh
TGFiZWwzMiBwYXlsb2FkU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NP
ZmZzZXRQYXRjaCh2YWx1ZVBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCkpKTsKQEAgLTU5NCw3ICs1OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRC
eUlkKENvZGVPCiAgICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQ
cm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRv
Q29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QodGFnU3RvcmVXaXRoUGF0Y2gubGFi
ZWwoKSksCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChwYXlsb2Fk
U3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksCiAgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9u
ZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwKQEAgLTM1NDMsNyArMzU0
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJ
bmRleCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTQsNiArNDk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJl
OwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQu
cGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29t
cGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVj
dHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oLTEpKSk7CiAgICAgCisgICAgSklUQ29tcGlsZXI6OkxhYmVsIHByb3BlcnR5U3Rv
cmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVs
Q29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09m
ZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7
CiAgICAgCkBAIC01MTQsOCArNTE1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAg
UHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwK
LSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNh
c3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJl
VG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQ
YXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGlu
dDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKICAgICAgICAgICAg
IHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAgICBzcGlsbE1vZGUgPT0g
TmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzMsNiArNTM0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVyKGJhc2VH
UFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNj
cmF0Y2hHUFIpOwogCisgICAgSklUQ29tcGlsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQg
PSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpKSwgc2NyYXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHN0b3Jl
V2l0aFBhdGNoID0gbV9qaXQuc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlR1BS
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCAwKSk7CiAKQEAgLTU2Myw3ICs1NjUs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVHUFIsIGJh
c2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICB9
Ci0gICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoUHJvcGVydHlBY2Nlc3NSZWNvcmQoY29kZU9y
aWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgSklUQ29tcGlsZXI6OkRh
dGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBk
b25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFs
dWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CisgICAgbV9qaXQuYWRkUHJv
cGVydHlBY2Nlc3MoCisgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0
b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAorICAgICAg
ICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZUdQ
UiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUikpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQogCkBAIC0zNTY3LDcgKzM1NzMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAg
IAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw3IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICAgICB9CiAKICAgICBpZiAoaXNKU0ZpbmFsT2Jq
ZWN0KGNlbGwpKSB7Ci0gICAgICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8
SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOworICAgICAgICBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
MTcsNyArMzcxNyw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIEpTVmFsdWUgZXhw
ZWN0ZWRTdWJzY3JpcHQgPSBjYWxsRnJhbWUtPnIoZXhwZWN0ZWQpLmpzVmFsdWUoKTsKICAgICAg
ICAgaW50IGluZGV4ID0gY2FsbEZyYW1lLT5yKGkpLmkoKSAtIDE7CiAgICAgICAgIEpTVmFsdWUg
cmVzdWx0OwotICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gMDsKICAgICAgICAgaWYgKHN1YnNjcmlwdCA9PSBleHBlY3RlZFN1YnNjcmlwdCAm
JiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkg
PT0gaXQtPmNhY2hlZFN0cnVjdHVyZSgpKSAmJiBpdC0+Z2V0T2Zmc2V0KGluZGV4LCBvZmZzZXQp
KSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUoYXNP
YmplY3QoYmFzZVZhbHVlKS0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwogICAgICAgICAgICAg
dlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3BuYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9h
Y3RpdmF0aW9uKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChv
cF9lcV9udWxsKQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9hcmd1
bWVudHNfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4
ICszMjAsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNo
X25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9v
Zl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRf
b2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBA
IC01MzcsNiArNTQxLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0
aQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQYXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4pOwogICAgICAgICBpbmZvLnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51
LmdldC5zdHJ1Y3R1cmVDaGVjayA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXRTdHJ1
Y3R1cmVDaGVjaykpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5
U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhv
dFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdl
TG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUu
dS5nZXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdl
ZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0
RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkBAIC01NTAsNiArNTU1LDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgIGNhc2UgUHV0QnlJZDoKICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LnB1
dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0U3Ry
dWN0dXJlVG9Db21wYXJlKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQucHJv
cGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQ
dHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0
b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaW5mby5wYXRjaC5iYXNl
bGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIGdldFN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgZ2V0U3RydWN0dXJlQ2hlY2s7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGdldERpc3BsYWNl
bWVudExhYmVsOwogI2Vsc2UKQEAgLTE4NSwxNyArMTg2LDI0IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2VuZGlmCiAKIAotICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oCisg
ICAgICAgICAgICBQcm9wZXJ0eVN0dWJHZXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
VG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbCwKICNlbHNlCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVz
dWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxh
Y2VtZW50TGFiZWwxLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwyLAogI2VuZGlmCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgcHV0UmVzdWx0KQogICAgICAgICAgICAgOiBtX3R5cGUoR2V0QnlJZCkKICAgICAg
ICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQ
YXRoQmVnaW4oaG90UGF0aEJlZ2luKQogICAgICAgICAgICAgLCBnZXRTdHJ1Y3R1cmVUb0NvbXBh
cmUoc3RydWN0dXJlVG9Db21wYXJlKQogICAgICAgICAgICAgLCBnZXRTdHJ1Y3R1cmVDaGVjayhz
dHJ1Y3R1cmVDaGVjaykKKyAgICAgICAgICAgICwgcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0
eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAsIGdldERpc3Bs
YWNlbWVudExhYmVsKGRpc3BsYWNlbWVudExhYmVsKQogI2Vsc2UKQEAgLTIwNiwxNiArMjE0LDIy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBQcm9w
ZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAg
ICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oCisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJQ
dXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBo
b3RQYXRoQmVnaW4sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0
cnVjdHVyZVRvQ29tcGFyZSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsCiAjZWxzZQotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMgogI2VuZGlmCisgICAgICAgICAgICAp
CiAgICAgICAgICAgICA6IG1fdHlwZShQdXRCeUlkKQogICAgICAgICAgICAgLCBieXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAsIGhvdFBhdGhCZWdpbihob3RQYXRoQmVn
aW4pCiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBh
cmUpCisgICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9h
ZCkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBwdXREaXNwbGFjZW1lbnRMYWJl
bChkaXNwbGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5w
cml2YXRlQ29tcGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8o
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAgICAg
ICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0
ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5w
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxG
cmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNl
bGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVj
b2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJl
cywgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwog
ICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2Fj
aGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2Jh
bERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0
dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudElu
ZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9m
ZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
R2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3Qs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQg
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAg
ICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHBy
b3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291
bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWlu
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGpp
dC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAg
ICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hh
aW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxs
RnJhbWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
UHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAg
ewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAg
ICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1
OCw4ICszNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNl
dFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVy
ZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJs
b2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3Rh
dGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0
dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8q
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxh
Y2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIGJvb2wgZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJv
dG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5m
byYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCos
IFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsK
ICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2Rl
IHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21w
aWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8o
U3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNo
ZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVj
dHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1
Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNh
Y2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50
LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBp
bnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJ
ZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxG
cmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCos
IGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsK
KyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5m
byosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsK
KyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0
dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zm
c2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9v
bCBkaXJlY3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4g
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBv
bGluZVN0cnVjdHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNh
bGwoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQ2OCwxMCAr
NDgyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRI
b3RQYXRoKCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0
VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAg
ICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0
KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2Fj
aGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJ
RCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB2
b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJl
c3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCk7Ci0g
ICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zm
c2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICAgICAgICAgLy8gQXJpdGhtZXRpYyBvcGNvZGUgaGVs
cGVycwogICAgICAgICB2b2lkIGVtaXRBZGQzMkNvbnN0YW50KHVuc2lnbmVkIGRzdCwgdW5zaWdu
ZWQgb3AsIGludDMyX3QgY29uc3RhbnQsIFJlc3VsdFR5cGUgb3BUeXBlKTsKQEAgLTU0NywxMCAr
NTYxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRI
b3RQYXRoKGludCBiYXNlVlJlZywgSWRlbnRpZmllciopOwogICAgICAgICB2b2lkIGNvbXBpbGVH
ZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNlVlJlZywgSWRlbnRpZmllciog
aWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRo
b2RDaGVjayA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwot
ICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lz
dGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9m
ZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMyw3ICszMzMsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkK
ICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3Ry
dWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlT
dG9yYWdlTG9hZCA9IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIp
OwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxID0gbG9hZFB0cldpdGhD
b21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1
bHRPZmZzZXQpLCByZWdUMCk7IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3Bs
YWNlbWVudExhYmVsMiA9IGxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRy
ZXNzKHJlZ1QyLCBwYXRjaEdldEJ5SWREZWZhdWx0T2Zmc2V0KSwgcmVnVDEpOyAvLyB0YWcKICAg
ICAKQEAgLTM0MSw3ICszNDIsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkK
ICAgICAKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQ
YXRoKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3Bl
cnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zm
c2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRp
c3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKKyAgICBt
X3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxh
dGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJl
Z2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAg
LTM5OSw3ICs0MDAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
CiAgICAgRGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7CiAgICAgCi0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHJlZ1QxKTsKKyAgICBMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMSk7CiAgICAgRGF0YUxhYmVsMzIgZGlz
cGxhY2VtZW50TGFiZWwxID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1QyLCBB
ZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHBheWxvYWQKICAg
ICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zm
c2V0UGF0Y2gocmVnVDMsIEFkZHJlc3MocmVnVDEsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQp
KTsgLy8gdGFnCiAgICAgCkBAIC00MDcsNyArNDA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKEluc3RydWN0aW9uKgogCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIs
IHJlZ1QxLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yUHJv
cGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBl
bmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0
ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBkaXNwbGFjZW1l
bnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMikpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21w
aWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0
dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29t
cGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1l
bnRMYWJlbDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQpAQCAtNDMwLDMwICs0MzIsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV9pZChJbnN0cnVjdAogfQogCiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBw
cm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBpbGVQ
dXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdp
c3RlcklEIHZhbHVlUGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsK
LSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIGVtaXRT
dG9yZShvZmZzZXQsIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGJhc2UpOworICAgIGlmIChpc091
dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKQorICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q7Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgZW1p
dFN0b3JlKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2FjaGVkT2Zmc2V0KSwgdmFsdWVUYWcsIHZhbHVl
UGF5bG9hZCwgYmFzZSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3Mg
cHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJl
Z2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRU
YWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
KQogewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQ7CisgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFz
ZShjYWNoZWRPZmZzZXQpLCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQYXlsb2Fk
OwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCByZXN1bHRQ
YXlsb2FkLCB0ZW1wKTsKKyAgICBlbWl0TG9hZChpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9m
ZnNldCksIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgdGVtcCk7CiB9CiAKLXZvaWQgSklUOjpj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBK
SVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCBy
ZXN1bHRUYWcpOwotICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICog
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhy
ZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAg
IGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihiYXNlLT5sb2NhdGlvbkZvck9mZnNldChjYWNoZWRPZmZzZXQpKSwgcmVzdWx0VGFn
KTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgbG9hZDMy
KEFkZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSksIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0
cihiYXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdFRhZyk7CisgICAgbG9h
ZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zm
c2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEFk
ZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
b24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KQogewogICAgIC8vIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCByZWdUMCBjb250
YWlucyB0aGUgYmFzZVBheWxvYWQgYW5kIHJlZ1QxIGNvbnRhaW5zIHRoZSBiYXNlVGFnLiBSZXN0
b3JlIHRoZW0gZnJvbSB0aGUgc3RhY2suCiAjaWYgQ1BVKE1JUFMpIHx8IENQVShTSDQpIHx8IENQ
VShBUk0pCkBAIC01NTMsNyArNTY2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJ
ZFRyYW5zaXRpbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJl
dHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2Rl
KCkpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQg
SklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNo
QnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAKQEAgLTU2NSwxMSArNTc4LDEy
IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY28KIAogICAgIC8vIFBh
dGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4g
cGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxD
b21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVu
dExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhv
dFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2Fk
SW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091
dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1Bh
dGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
dGFnKSk7IC8vIHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01ODEsOCArNTk1LDkgQEAgdm9pZCBKSVQ6OnBhdGNo
UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRv
IHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJl
IHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0
aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1
dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0
T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDIp
LCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRh
ZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC51LnB1dC5wcm9wZXJ0
eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwxKSwg
b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAvLyBwYXlsb2FkCisgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTYyOSw3
ICs2NDQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIFBhdGNoZWRPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlND
ZWxsKgogICAgIApAQCAtNzAwLDcgKzcxNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRQcm90byhTdHIKIH0KIAogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRl
eCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICAv
LyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1
Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CkBAIC03NjAsNyArNzc1LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAK
LXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5
cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBA
IC04MjksNyArODQ0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlz
dAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFi
ZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAg
LTkwNCw3ICs5MTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJl
bChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90
IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0Nl
bGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAgLTk3OSw5ICs5OTQsMTQgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZQogewogICAgIEFTU0VSVChzaXplb2YoSlNWYWx1
ZSkgPT0gOCk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFz
ZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
cGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBv
ZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcp
KSwgcmVzdWx0VGFnKTsKKyAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9m
ZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNl
KTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAg
ICBhZGRQdHIoVHJ1c3RlZEltbVB0cihKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkg
KyBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgYmFzZSk7
CisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0
LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkg
LSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgcmVzdWx0
UGF5bG9hZCk7CisgICAgbG9hZDMyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpIC0gaW5saW5lU3RvcmFnZUNh
cGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFRhZyk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMTAwNiw2ICsxMDI2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKElu
c3RydWN0aQogICAgIGxvYWQzMihhZGRyZXNzRm9yKGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCByZWdUMywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IsIG1fbnVtQ2FjaGVhYmxlU2xvdHMpKSkpOworICAgIGFkZDMyKEFkZHJlc3MocmVn
VDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX29mZnNldEJhc2Up
KSwgcmVnVDMpOwogICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdU
MCwgcmVnVDMpOyAgICAKICAgICAKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsOCArMTUzLDE1IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKIAogdm9pZCBKSVQ6OmNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0
ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoKTsKLSAg
ICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAwKSwgcmVzdWx0
KTsKKyAgICBBU1NFUlQoc2l6ZW9mKEpTVmFsdWUpID09IDgpOworICAgIAorICAgIEp1bXAgaXNJ
bmxpbmUgPSBicmFuY2gzMihMZXNzVGhhbiwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5saW5lU3Rv
cmFnZUNhcGFjaXR5KSk7CisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKKyAgICBpc0lubGluZS5saW5rKHRoaXMpOworICAgIGFkZFB0cihUcnVzdGVkSW1tUHRyKEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBiYXNlLCBzY3JhdGNoKTsKKyAgICBkb25lLmxpbmso
dGhpcyk7CisgICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwg
LWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdCk7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtMzczLDE0ICszODAsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aChpbnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBh
ZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIExhYmVs
IHByb3BlcnR5U3RvcmFnZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIHJlZ1QwKTsKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsID0gbG9h
ZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDAsIHBhdGNoR2V0
QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMCk7CiAKICAgICBMYWJlbCBwdXRSZXN1bHQodGhpcyk7
CiAKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRo
KTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3Bs
YWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRp
b25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0
QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCwg
cHV0UmVzdWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKQEAgLTQ0MCwxNCArNDQ4LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChJbnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZElt
bVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJl
KSkpKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJv
cGVydHlTdG9yYWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9
IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFM
YWJlbDMyIGRpc3BsYWNlbWVudExhYmVsID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNo
KHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7CiAKICAg
ICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogCiAgICAgZW1p
dFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmlsdGVySW1t
ZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0
eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZv
KFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbCkpOworICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9w
ZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwpKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDcx
LDI4ICs0ODAsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAog
CiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAg
TWF5IG92ZXJ3cml0ZSB0aGUKIC8vIHZhbHVlIGluIG9iamVjdFJlZy4KLXZvaWQgSklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6
ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
KQogewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpKSwgYmFzZSk7Ci0gICAgc3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgb2Zmc2V0KSk7
CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgc3RvcmVQ
dHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgc3Rv
cmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKIH0KIAogLy8gQ29tcGlsZSBhIGxvYWQgZnJv
bSBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9p
ZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9m
KEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwg
b2Zmc2V0KSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkg
eworICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICsgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hl
ZE9mZnNldCkpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCByZXN1bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIHNpemVvZihKU1ZhbHVlKSAq
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKIH0KIAot
dm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVy
SUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0
b3JhZ2UoKSwgcmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBjYWNoZWRPZmZz
ZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CisgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihiYXNlLT5sb2Nh
dGlvbkZvck9mZnNldChjYWNoZWRPZmZzZXQpLCByZXN1bHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgp
LCByZXN1bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldEluT3V0T2ZsaW5l
U3RvcmFnZShjYWNoZWRPZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCBy
ZXN1bHQpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIEp1bXBM
aXN0IGZhaWx1cmVDYXNlczsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRoZSBy
aWdodCBTdHJ1Y3R1cmUuCkBAIC01NzIsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFt
cG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91
dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKK3ZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAg
ICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTgwLDE0ICs2
MDIsMTMgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8v
IFNob3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRv
ZXNuJ3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlf
b3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkpOwogCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1Zh
bHVlKSAqIGNhY2hlZE9mZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUg
cHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBs
b29rIGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3Ry
dWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICBy
ZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVy
dHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBh
Y3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFi
ZWwpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAK
LXZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQor
dm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApA
QCAtNTk5LDcgKzYyMCw4IEBAIHZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9j
ayoKIAogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBs
b2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlKSwg
c3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5k
aXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5z
dHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9m
TGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0
Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02NDMs
NyArNjY1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5j
dGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBv
YmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9j
ayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcg
dGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJs
ZSBuaWNlIGFuZCBlYXJseSEpCkBAIC03MTAsNyArNzMyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9G
dW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3Rv
X2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgSnVtcCBmYWls
dXJlQ2FzZSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogICAgIGJvb2wgbmVl
ZHNTdHViTGluayA9IGZhbHNlOwpAQCAtNzcwLDcgKzc5Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJDb2RlLmNvZGUoKSkpOwogfQogCi12b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVz
LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIC8vIFRoZSBwcm90b3R5cGUgb2JqZWN0IGRlZmluaXRlbHkgZXhpc3Rz
IChpZiB0aGlzIHN0dWIgZXhpc3RzIHRoZSBDb2RlQmxvY2sgaXMgcmVmZXJlbmNpbmcgYSBTdHJ1
Y3R1cmUgdGhhdCBpcwogICAgIC8vIHJlZmVyZW5jaW5nIHRoZSBwcm90b3R5cGUgb2JqZWN0IC0g
bGV0J3Mgc3BlY3VsYXRpdmVseSBsb2FkIGl0J3MgdGFibGUgbmljZSBhbmQgZWFybHkhKQpAQCAt
ODM5LDcgKzg2MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QK
ICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVs
KHN0dWJDb2RlLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90
IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIEFTU0VSVChjb3VudCk7CiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKQEAgLTkxNCw3
ICs5MzYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHVi
Um91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
KTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk1Miw3ICs5NTgsMTAg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90
LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBw
Y1s2XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRh
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWlu
KGV4ZWMpOwpAQCAtOTYwLDE2ICs5NjksMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWlu
LnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHBjWzhdLnUub3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9s
aW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAg
ICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90
LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEyLDggKzE1MzMsOCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3BuYW1lCiAgICAgCiAgICAgTExJTlRfT1Ao
MSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIExMSU5UX09QKDIpID0g
SlNWYWx1ZShvKTsKLSAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOwotICAg
IExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+
c2l6ZSgpKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlO
YW1lSXRlcmF0b3ItPmZpcnN0T2Zmc2V0KCkpOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6
OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+b2Zmc2V0RW5kKCkpOwogICAgIAogICAg
IHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CiAgICAgTExJTlRfRU5EKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTkxOSw2ICs5MTksMTcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBkaXNwYXRjaCgz
KQogCiAKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQs
IG9iamVjdEFuZFN0b3JhZ2UsIHRhZywgcGF5bG9hZCkKKyAgICBiaWx0IHByb3BlcnR5T2Zmc2V0
LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAg
ICBqbXAgLnJlYWR5CisuaXNJbmxpbmU6CisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGlu
ZVN0b3JhZ2UgKyBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RBbmRTdG9yYWdlCisu
cmVhZHk6CisgICAgbG9hZGkgVGFnT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtv
YmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHBy
b3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZAorZW5kCisKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6
ZSwgc2xvdykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgNFtQQ10gICBE
ZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC05MzAsOSArOTQxLDcgQEAgbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQogICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKICAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0s
IHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0MykKICAg
ICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQog
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpAQCAtMTA4NywzMSArMTA5
Niw0NCBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkK
IAogCi1fbGxpbnRfb3BfZ2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9i
eV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorIyBvcGNvZGUu
IFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlm
IGZhaWxzLCBzaW5jZQorIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVj
a3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtlIGZhc3QgcGF0aCBv
biB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hh
dAorIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNybyBnZXRCeUlkKGdl
dFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBXZSBvbmx5IGRv
IG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9k
aWZ5IHRoZQotICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNo
ZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBpbmctcG9uZ2luZyBp
cyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRp
bnVlCi0gICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3
ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291bGQgaGF2ZSBiZWVu
IGRvaW5nIGFueXdheS4KICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkaSAxNltQQ10sIHQx
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BH
ZXRCeUlkU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0Ml0sIHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0Mgot
ICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQotICAgIHZhbHVlUHJv
ZmlsZSh0MywgdDIsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdl
KAorICAgICAgICB0MywKKyAgICAgICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3Jh
Z2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICAgICAg
ICAgIGxvYWRpIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAg
ICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKKyAgICAg
ICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZGkg
MzJbUENdLCB0MQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQyLCB0MSkKKyAg
ICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIAorICAgICAgICAub3BHZXRCeUlkU2xvdzoK
KyAgICAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAg
ICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAogCi0ub3BHZXRCeUlkU2xv
dzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlz
cGF0Y2goOSkKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3aXRoSW5saW5lU3Rv
cmFnZSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdldEJ5SWQo
d2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3Ro
OgpAQCAtMTEzMCw2OCArMTE1Miw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6
CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJ
ZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRb
UENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BD
XSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBs
b2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0
MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3Qz
LCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRpc3BhdGNo
KDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisg
ICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAg
ICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIp
CisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwg
dDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdl
LCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAogCiAub3BQ
dXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQp
CiAgICAgZGlzcGF0Y2goOSkKIAorX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBwdXRCeUlkKHdp
dGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6Cisg
ICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKKwogCi1tYWNybyBwdXRCeUlkVHJhbnNp
dGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25h
bENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBs
b2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2Fk
aSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0
MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAgd3JpdGVC
YXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBsb2FkaSAy
NFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0
MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3Bl
cnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJv
cGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9y
YWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0
MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICAgICAg
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3JlcCB0MSwg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAg
IGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3Jh
dGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2Ny
YXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhl
IG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAyOFtQQ10s
IHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisg
ICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9u
ZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3Jh
dGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5s
b29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNs
b3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJ
bmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rf
b3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3
aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xkU3RydWN0
dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3Ry
dWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90
bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAgICAgICAg
ICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAg
ICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAg
ICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwg
TnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwK
LSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3Ry
dWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwot
ICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCi0g
ICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0
dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24o
c3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9v
cF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzExLDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFt
ZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIGJpYWVx
IHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9w
R2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJd
LCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03
NzgsNiArNzc4LDE2IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAog
CittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmpl
Y3RBbmRTdG9yYWdlLCB2YWx1ZSkKKyAgICBiaWx0IHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0
b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAgICBqbXAgLnJlYWR5
CisuaXNJbmxpbmU6CisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgKyBJ
bmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RBbmRTdG9yYWdlCisucmVhZHk6CisgICAg
bG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVy
dHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xv
dykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgOFtQQiwgUEMsIDhdICAg
RGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtNzg5LDggKzc5OSw3IEBAIG1hY3JvIHJlc29s
dmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKICAgICBicG5lcSB0MSwgMjRbUEIsIFBDLCA4XSwgc2xvdwogICAgIGxvYWRpcyAzMltQQiwg
UEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQw
Ci0gICAgbG9hZHAgW3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDAsIHQyKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgc3RvcmVw
IHQyLCBbY2ZyLCB0MCwgOF0KICAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQQiwgUEMsIDhdLCB0
MApAQCAtOTM3LDcgKzk0Niw3IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAg
ICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CittYWNybyBnZXRCeUlkKGdl
dFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRv
IG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9k
aWZ5IHRoZQogICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNo
ZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKQEAgLTk0OCwxOCArOTU3LDMwIEBA
IF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxv
YWRpcyA0MFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BH
ZXRCeUlkU2xvdwotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgW3QwLCB0
Ml0sIHQzCi0gICAgc3RvcmVwIHQzLCBbY2ZyLCB0MSwgOF0KLSAgICBsb2FkcCA2NFtQQiwgUEMs
IDhdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBn
ZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFj
cm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA4
W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICBsb2FkcCBbcHJvcGVydHlTdG9yYWdlLCB0Ml0s
IHNjcmF0Y2gKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbY2ZyLCB0MSwgOF0KKyAgICAg
ICAgICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUo
c2NyYXRjaCwgdDEpCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICAKKyAgICAgICAg
Lm9wR2V0QnlJZFNsb3c6CisgICAgICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfaWQpCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQK
IAotLm9wR2V0QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5
SWQod2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGlu
ZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRf
YXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCwyNiArOTk5LDM4IEBAIF9sbGludF9vcF9nZXRfYXJn
dW1lbnRzX2xlbmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9wdXRfYnlfaWQ6
CittYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0
MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cp
CiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgd3JpdGVCYXJyaWVyKHQwKQotICAgIHN0
b3JlcCB0MCwgW3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFn
ZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9y
YWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxLCAub3BQdXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQx
CisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCBzY3JhdGNoKQorICAgICAg
ICAgICAgd3JpdGVCYXJyaWVyKHQwKQorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtwcm9w
ZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQor
ZW5kCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAg
IHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF9vdXRf
b2ZfbGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCiAKLW1hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCittYWNybyBwdXRCeUlkVHJhbnNpdGlv
bihhZGRpdGlvbmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4
XSwgdDEKQEAgLTEwMDYsMzcgKzEwMzksNTQgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRk
aXRpb25hbENoZWNrcwogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKICAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cp
CiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAor
ICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2Us
IHNjcmF0Y2gpCisgICAgICAgICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3JhZ2UsIHQzCisgICAg
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKKyAgICAgICAgICAgIHdyaXRl
QmFycmllcih0MSkKKyAgICAgICAgICAgIHN0b3JlcCB0MSwgW3QzXQorICAgICAgICAgICAgbG9h
ZHAgNDhbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKICAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQz
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCi0gICAgd3JpdGVCYXJyaWVyKHQx
KQotICAgIHN0b3JlcCB0MSwgW3QzXQotICAgIGxvYWRwIDQ4W1BCLCBQQywgOF0sIHQxCi0gICAg
c3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQotICAgIGRpc3BhdGNoKDkpCitlbmQK
KworbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAor
CittYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAg
Y29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0
dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICBsb2FkcCA1NltQQiwgUEMsIDhdLCBzY3Jh
dGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxv
YWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBicGVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQorLmxvb3A6CisgICAg
bG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAg
IGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFkZHAg
OCwgc2NyYXRjaAorICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJl
XSwgVmFsdWVOdWxsLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0
dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlv
bmFsQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRk
aXRpb25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAgICAgICAg
bWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNvbnN0IHBy
b3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdp
c3RlciBmb3IgdGhlIHByb3RvCi0gICAgICAgICAgICBsb2FkcCA1NltQQiwgUEMsIDhdLCBzY3Jh
dGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQp
Ci0gICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNj
cmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVu
ZCkKLSAgICAgICAgICAgIGJwZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVd
LCBWYWx1ZU51bGwsIC5kb25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAgbG9hZHAgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAg
ICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAg
YWRkcCA4LCBzY3JhdGNoCi0gICAgICAgICAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
W29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0gICAgICAg
IGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9v
dXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywg
d2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBAIC0xMTA2
LDggKzExNTYsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0sIHQzCiAgICAgc3ViaSAxLCB0MwogICAgIGJpYWVxIHQzLCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QxXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAg
IGxvYWRwIFt0MCwgdDMsIDhdLCB0MAorICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9vZmZzZXRCYXNlW3QxXSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQz
LCB0MCwgdDApCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBzdG9yZXAgdDAsIFtj
ZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjE2MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJuUEMgPSBB
cmd1bWVudENvdW50ICsgVGEKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdzOEJpdEJ1
ZmZlciA9IDY0CiAKKyMgUHJvcGVydHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFMVUU2NAor
ICAgIGNvbnN0IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25zdCBJbmxp
bmVTdG9yYWdlQ2FwYWNpdHkgPSA2CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50cwogaWYg
SlNWQUxVRTY0CiAgICAgY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMQpAQCAt
NDgxLDYgKzQ4OCwyMSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CiAgICAgZGlzcGF0
Y2goNSkKIAogCittYWNybyB3aXRoSW5saW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFn
ZSwgY29udGludWF0aW9uKQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBw
cm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVn
aXN0ZXIgaXMgdW51c2VkLgorICAgIGNvbnRpbnVhdGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFn
ZSkKK2VuZAorCittYWNybyB3aXRoT3V0T2ZMaW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3Rv
cmFnZSwgY29udGludWF0aW9uKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3Jh
Z2Vbb2JqZWN0XSwgcHJvcGVydHlTdG9yYWdlCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBwcm9w
ZXJ0eVN0b3JhZ2UgcmVnaXN0ZXIgbm93IHBvaW50cyB0byB0aGUKKyAgICAjIHByb3BlcnR5IHN0
b3JhZ2UsIGFuZCB0aGF0IHRoZSBvYmplY3QgcmVnaXN0ZXIgbWF5IGJlIHJldXNlZAorICAgICMg
aWYgdGhlIG9iamVjdCBwb2ludGVyIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KKyAgICBjb250aW51
YXRpb24ocHJvcGVydHlTdG9yYWdlLCBvYmplY3QpCitlbmQKKworCiBfbGxpbnRfb3BfZGVsX2J5
X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9kZWxfYnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94
ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw3ICs1NTUsMTEgQEAgY2xhc3MgSW5zdHJ1
Y3Rpb24KICAgICBlbmQKICAgICAKICAgICBkZWYgaGFuZGxlWDg2QWRkKGtpbmQpCi0gICAgICAg
IGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisg
ICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNb
MF0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9w
ZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZh
bHVlID09IDAKQEAgLTU2OCw3ICs1NzIsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklE
CiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAog
ICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKLSAg
ICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBd
ID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZp
eChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbmQKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQogICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7eDg2T3BlcmFuZHMoa2lu
ZCwga2luZCl9IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9pZCBKU09i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JE
ZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
biA9IGZhbHNlOwogI2VuZGlmCisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOworCisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5v
dXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0
b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93
bk5vbkZpbmFsT2JqZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhl
cmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVm
ZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFn
ZTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAgICAgIHN0b3JhZ2Ug
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAgICB0aGlzT2JqZWN0
LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNr
ZWQpOworICAgIH0KKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xh
dGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CisjZW5kaWYKK30KIAot
ICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK3ZvaWQgSlNG
aW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTRmluYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbE9i
amVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JE
ZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb247CisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
biA9IGZhbHNlOworI2VuZGlmCisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXMs
IHZpc2l0b3IpOwogCi0gICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5w
cm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgIGlmICh0aGlzT2JqZWN0LT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9y
YWdlLCBzdG9yYWdlU2l6ZSk7Ci0gICAgZWxzZSB7CisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3Jh
Z2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsK
KyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91
dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhp
cyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2Yg
dGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lk
KiB0ZW1wID0gc3RvcmFnZTsKLSAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVv
ZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6
ZSk7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOwogICAgICAgICBzdG9yYWdl
ID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLSAgICAgICAgdGhpc09iamVj
dC0+bV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNr
ZWQpOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2Us
IFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOwogICAgIH0KIAogICAgIGlmICh0aGlzT2JqZWN0
LT5tX2luaGVyaXRvcklEKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
bmhlcml0b3JJRCk7CiAKKyAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICB2aXNpdG9yLmFw
cGVuZFZhbHVlcyhpbmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKKwogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
ID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRpZgpAQCAtMTUzLDgg
KzE4Myw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICBm
b3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlw
ZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpAQCAtNTE5LDE3ICs1NDksMTcgQEAgYm9vbCBK
U09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YQogICAgIGlmIChzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgc2l6ZV90IG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7
CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0g
V1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNl
dCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNl
dCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTksMjUgKzU4OSwyMiBAQCBTdHJ1Y3R1cmUqIEpT
T2JqZWN0OjpjcmVhdGVJbmhlcml0b3JJRChKCiAgICAgcmV0dXJuIG1faW5oZXJpdG9ySUQuZ2V0
KCk7CiB9CiAKLVByb3BlcnR5U3RvcmFnZSBKU09iamVjdDo6Z3Jvd1Byb3BlcnR5U3RvcmFnZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkK
K1Byb3BlcnR5U3RvcmFnZSBKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCiB7CiAgICAg
QVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQg
dGhpcyBmdW5jdGlvbiBub3QgcmVseSBvbiBzdHJ1Y3R1cmUoKSwgc2luY2UKICAgICAvLyB3ZSBt
aWdodCBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJhbnNpdGlvbi4KIAotICAgIFByb3BlcnR5U3Rv
cmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsKKyAgICBQ
cm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9vdXRPZkxpbmVTdG9yYWdlLmdl
dCgpOwogICAgIFByb3BlcnR5U3RvcmFnZSBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSAwOwogCi0gICAg
aWYgKGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICBpZiAoIW9sZFByb3BlcnR5U3RvcmFn
ZSkgewogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdD
QydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1
bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IG5ld1Byb3BlcnR5U3RvcmFnZTsK
ICAgICAgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKHNpemVvZihX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSAqIG5ld1NpemUsICZ0ZW1wKSkKICAgICAgICAgICAg
IENSQVNIKCk7CiAgICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3Bl
cnR5U3RvcmFnZT4odGVtcCk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9s
ZFNpemU7ICsraSkKLSAgICAgICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZVtpXSA9IG9sZFByb3Bl
cnR5U3RvcmFnZVtpXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0
cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3Nl
IHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVt
cCA9IG9sZFByb3BlcnR5U3RvcmFnZTsKQEAgLTU5NCw4ICs2MjEsOCBAQCBib29sIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9
IDA7CiAgICAgSlNDZWxsKiBjZWxsID0gMDsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBjZWxsKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsKKyAgICBpZiAob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZXNjcmlwdG9yLnNl
dERlc2NyaXB0b3Iob2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSwgYXR0cmlidXRlcyk7
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDE0ICs3OSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBh
IGdldHRlci9zZXR0ZXIKICAgICB9OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZpbmUg
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNgotI2Vsc2UKLSNkZWZpbmUgSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAotI2VuZGlmCi0KLUNPTVBJTEVfQVNT
RVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSAwKSwgZmluYWxfc3Rv
cmFnZV9ub25fbmVnYXRpdmUpOwotCiAgICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMTY5LDI2ICsxNjEsNzIgQEAgQ09NUElMRV9BU1NF
UlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlv
biBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGly
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgp
OworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0
LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVl
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsK
KyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwg
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAg
ICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9j
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBz
cGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0
aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CisgICAgICAgIH0KKwor
ICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmUo
KS0+aGFzSW5saW5lU3RvcmFnZSgpOyB9CisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlu
bGluZVN0b3JhZ2VVbnNhZmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PENvbnN0UHJvcGVydHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0K
KyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2VVbnNhZmUoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb3BlcnR5U3RvcmFnZT4odGhpcyAr
IDEpOworICAgICAgICB9CisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFn
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAg
IH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENv
bnN0UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX291
dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGlu
ZVN0b3JhZ2UoKSB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKworICAgICAg
ICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFn
ZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAm
b3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKICAg
ICAgICAgfQogCi0gICAgICAgIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gLSBwcm9wZXJ0eVN0b3JhZ2UoKTsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdl
VW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICAgICAg
ICAgIHZhbGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTIwNSw5ICsyNDMs
OSBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJv
b2wgcHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24g
cHJvcGVydHkgb2Zmc2V0cy4KLSAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90
IG9mZnNldCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsg
fQotICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0
XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZz
ZXRdLnNldFVuZGVmaW5lZCgpOyB9CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9jYWxGb3JPZmZzZXQob2Zmc2V0
KS0+Z2V0KCk7IH0KKyAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRp
b25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQorICAg
ICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKIApAQCAtMjI4LDI0ICsyNjYsMTYgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CiAg
ICAgICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVj
KTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd1Byb3Bl
cnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUp
OwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPQotICAgICAgICAgICAgICAgICFtX3Byb3BlcnR5U3Rv
cmFnZS5nZXQoKQotICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPiht
X3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMg
KyAxKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gc3RydWN0dXJlKCktPmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
ICAgICAgICB2b2lkIHNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0
b3JhZ2UsIFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0
b3JhZ2UgZ3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUs
IHNpemVfdCBuZXdTaXplKTsKKyAgICAgICAgdm9pZCBzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xv
YmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAg
ICBib29sIHJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWdu
ZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFu
ZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxs
b2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAg
ICAgICAgdm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgdm9pZCogYWRk
cmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAm
bV9wcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4gJm1fb3V0T2ZMaW5lU3RvcmFn
ZTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMjYxLDcgKzI5MSw3IEBAIENPTVBJTEVfQVNTRVJU
KChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKLSAgICAgICAgc3RhdGljIHNp
emVfdCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
SW5oZXJpdG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwpAQCAtMjg3LDcgKzMxNyw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlv
dSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRl
IGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93Lgot
ICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwogICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAg
ICAgewpAQCAtMzA1LDE5ICszMzUsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmlu
ZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAg
UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9y
YWdlLmdldCgpOyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90
IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2Uo
KVtvZmZzZXRdOwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAg
ICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0z
MjcsNyArMzQ0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rvcgog
ICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRv
cklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlT
dG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAt
MzUzLDE0ICszNzAsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rv
cgogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAg
ICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAg
ICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFn
ZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAg
fQogICAgIH07CkBAIC0zODEsNiArMzk4LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKIAogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSAr
NDA3LDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2
b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7
CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIEFTU0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3Jh
Z2UpICUgc2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlu
bGluZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFT
U0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVT
dG9yYWdlQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAg
ICAgfQogCkBAIC00MDAsMTMgKzQyMiwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBK
U09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5s
aW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdF
X0NBUEFDSVRZXTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVj
dDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEs
OSArNDUzLDkgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsK
IH0KIAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQor
aW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7Cisg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsK
IH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00
NzEsMTQgKzQ5MywxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29u
CiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlz
VHlwZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0
dXJlKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAg
ICAgICAgICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0
aWNfY2FzdDx2b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkp
OworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOwor
ICAgIH0KICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3By
b3BlcnR5U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRP
ZkxpbmVTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5l
IEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtNTE2LDkgKzU0Miw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmpl
Y3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwog
fQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5s
aW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAs
IG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAg
LCBtX291dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQy
LDE5ICs1NjgsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAg
ICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6
ZV90IFN0cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAo
Y2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1p
bmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNp
dHkoKSk7Ci0gICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3Rv
cmFnZUNhcGFjaXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3Qg
Q2xhc3NJbmZvKiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJD
bGFzc09mKGluZm8pOwpAQCAtNjExLDEwICs2MjQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
Q2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdl
dE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAg
ICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAg
ICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8g
c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFt
ZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
YW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAo
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhp
cyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4g
SlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY4OSw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCkt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50
U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkg
eworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1
bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRo
ZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlz
IGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNp
ZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rp
b24pKQpAQCAtNzAwLDEzICs3MTMsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5z
aWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3Rv
cmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1
cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3Jh
Z2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9y
YWdlU2l6ZSgpKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxp
bmVTdG9yYWdlKCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxp
bmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3Jh
Z2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVy
ZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9m
ZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAg
IHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7
CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3Ry
dWN0dXJlKCkpOwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7Cisg
ICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHko
KSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsK
ICAgICAgICAgLy8gU2VlIGNvbW1lbnQgb24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAg
ICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQpAQCAtNzE0LDE1ICs3MjgsMTYgQEAgaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkg
PSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQ7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSh0aGlzLT5zdHJ1
Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZz
ZXQpKSB7Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9y
YWdlKCk7IAotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLQotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAgc2V0UHJvcGVydHlTdG9yYWdl
KGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CisgICAgICAgIFByb3BlcnR5U3Rv
cmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOyAKKyAgICAgICAgaWYgKGN1cnJl
bnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAg
ICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENh
cGFjaXR5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworCisgICAgICAgIHZhbGlk
YXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnRv
dGFsU3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2Jh
bERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChn
bG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9w
ZXJ0eTsgdHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkg
Y2FjaGFibGUsCiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUg
c3RhdGUuCkBAIC03MzQsNyArNzQ5LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCog
Y3VycmVudFNwZWNpZmljRnVuY3Rpb247CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbik7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYg
KG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2Rl
UHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC03NjgsNyArNzgzLDggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKAogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwogICAgIAotICAg
IEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwor
ICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVy
ZS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs3OTcsMjIg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9p
ZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0g
bmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2Fw
YWNpdHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAg
aWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewog
ICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdy
b3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdT
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5
U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2Jh
bERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwor
ICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0
dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2Nh
dGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0MCwxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCgh
dmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYg
KHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdT
dG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5
U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBu
ZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0
V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0
T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VTaXplKCkpOworICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFi
bGVPYmplY3QodmFsdWUpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5l
d1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
b2Zmc2V0LCB2YWx1ZSk7CiB9CiAKQEAgLTkwNiw4ICs5MjIsNiBAQCBpbmxpbmUgdm9pZCBKU1Zh
bHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0CiAgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1
dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93
KTsKIH0KIAotLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIFJlZ2lzdGVyOjpmdW5jdGlvbigpIGNvbnN0
CiB7CiAgICAgaWYgKCFqc1ZhbHVlKCkpCkBAIC05MjIsNiArOTM2LDI1IEBAIEFMV0FZU19JTkxJ
TkUgUmVnaXN0ZXIgUmVnaXN0ZXI6OndpdGhDYWwKICAgICByZXR1cm4gcjsKIH0KIAorLy8gVGhp
cyBpcyBhIGhlbHBlciBmb3IgcGF0Y2hpbmcgY29kZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0IGEg
bG9hZCBvciBzdG9yZSBhbmQKKy8vIHRoZSBiYXNlIGlzOgorLy8gRm9yIGlubGluZSBvZmZzZXRz
OiBhIHBvaW50ZXIgdG8gdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UgcG9pbnRlci4KKy8vIEZvciBv
dXQtb2YtbGluZSBvZmZzZXRzOiB0aGUgYmFzZSBvZiB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4K
K2lubGluZSBzaXplX3Qgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAg
ICAgcmV0dXJuIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
IC0gSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpICsgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgaW50
IGluZGV4UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChp
c091dE9mTGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKG9mZnNldCk7CisgICAgQVNTRVJUKCEoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworICAgIHJldHVybiBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gSlNPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdAogICAgIHNpemVfdCBudW1DYWNoZWFibGVTbG90cyA9
IDA7CiAgICAgaWYgKCFvLT5zdHJ1Y3R1cmUoKS0+aGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMo
KSAmJiAhby0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKQogICAgICAg
ICAmJiAhby0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgJiYgIW8tPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKLSAgICAg
ICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6
ZSgpOworICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT50b3RhbFN0
b3JhZ2VTaXplKCk7CiAgICAgCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHBy
b3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7Ci0gICAganNQcm9wZXJ0eU5h
bWVJdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCkpOwor
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5
TmFtZXMuZGF0YSgpLCBvKTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpCiAgICAgICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMSArNjMsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBp
LCBpbnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIFByb3BlcnR5
T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpID49IG1fbnVtQ2Fj
aGVhYmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
b2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBtX29mZnNldEJhc2U7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04OCwxMiArODgsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURh
dGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewog
ICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAg
ICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9w
ZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3Rv
cigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7
ICsraSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3Ry
aW5nKCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVjdC0+c3RydWN0dXJlKCkt
PmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNSw2
ICsxMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNh
Y2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVC
YXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUq
IAogICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAg
ICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmot
PnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIHVuc2ln
bmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2VycwogCiB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkK
IHsKLSAgICBTRVQodXNlSklULCB0cnVlKTsKKyAgICBTRVQodXNlSklULCBmYWxzZSk7CiAgICAg
CiAgICAgU0VUKHNob3dEaXNhc3NlbWJseSwgZmFsc2UpOwogICAgIFNFVChzaG93REZHRGlzYXNz
ZW1ibHksIGZhbHNlKTsgLy8gREZHIGRpc2Fzc2VtYmx5IGlzIHNob3duIGlmIHNob3dEaXNhc3Nl
bWJseSB8fCBzaG93REZHRGlzYXNzZW1ibHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMTIxNjM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eU1hcEhh
c2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAorI2luY2x1ZGUgIlBy
b3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTcyLDExICs3MywxMSBAQCBp
bmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAKIHN0cnVjdCBQcm9wZXJ0
eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0Owor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
IFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7CiAKLSAgICBQcm9wZXJ0eU1hcEVu
dHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCog
a2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgOiBrZXko
a2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwgYXR0cmlidXRlcyhhdHRy
aWJ1dGVzKQpAQCAtMTc1LDcgKzE3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGVsZXRl
ZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKICAgICB1bnNpZ25lZCBn
ZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9m
ZnNldCk7CisgICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7
CisgICAgCisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChKU1R5cGUgdHlwZSk7CiAKICAg
ICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5zdXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxl
YXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+
IGNvcHkoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkp
OwpAQCAtMjMwLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQqIG1faW5kZXg7CiAg
ICAgdW5zaWduZWQgbV9rZXlDb3VudDsKICAgICB1bnNpZ25lZCBtX2RlbGV0ZWRDb3VudDsKLSAg
ICBPd25QdHI8IFZlY3Rvcjx1bnNpZ25lZD4gPiBtX2RlbGV0ZWRPZmZzZXRzOworICAgIE93blB0
cjwgVmVjdG9yPFByb3BlcnR5T2Zmc2V0PiA+IG1fZGVsZXRlZE9mZnNldHM7CiAKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgTWluaW11bVRhYmxlU2l6ZSA9IDE2OwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOwpAQCAtMjY0LDkgKzI2Nyw5IEBAIGlubGlu
ZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wKICAgICB9CiAKICAgICAvLyBDb3B5
IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhl
ckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0
ZWRPZmZzZXRzKSk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCiBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVy
LCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpA
QCAtMjg4LDkgKzI5MSw5IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpT
R2wKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAg
ICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRP
ZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxl
dGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0
b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CisgICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6flByb3BlcnR5VGFibGUoKQpA
QCAtNDY5LDIwICs0NzIsMzEgQEAgaW5saW5lIGJvb2wgUHJvcGVydHlUYWJsZTo6aGFzRGVsZXRl
ZE9mZgogICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRzICYmICFtX2RlbGV0ZWRPZmZzZXRzLT5p
c0VtcHR5KCk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVk
T2Zmc2V0KCkKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVk
T2Zmc2V0KCkKIHsKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2RlbGV0ZWRPZmZzZXRzLT5sYXN0
KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgp
OwogICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxhc3QoKTsKICAgICByZXR1cm4gb2Zmc2V0
OwogfQogCi1pbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KHVuc2ln
bmVkIG9mZnNldCkKK2lubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghbV9kZWxldGVkT2Zmc2V0cykKLSAg
ICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KTsK
KyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlP
ZmZzZXQ+KTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIAoraW5s
aW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6Om5leHRPZmZzZXQoSlNUeXBlIHR5cGUp
Cit7CisgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkKKyAgICAgICAgcmV0dXJuIGdldERlbGV0
ZWRPZmZzZXQoKTsKKyAgICAKKyAgICBpZiAodHlwZSA9PSBGaW5hbE9iamVjdFR5cGUpCisgICAg
ICAgIHJldHVybiBzaXplKCk7CisgICAgCisgICAgcmV0dXJuIHNpemUoKSArIGZpcnN0T3V0T2ZM
aW5lT2Zmc2V0OworfQorCiBpbmxpbmUgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBQcm9wZXJ0
eVRhYmxlOjpjb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5z
aWduZWQgbmV3Q2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKG5ld0NhcGFjaXR5ID49IG1fa2V5Q291
bnQpOwpAQCAtNDk5LDcgKzUxMyw3IEBAIGlubGluZSBzaXplX3QgUHJvcGVydHlUYWJsZTo6c2l6
ZUluTWVtb3IKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gc2l6ZW9mKFByb3BlcnR5VGFibGUpICsg
ZGF0YVNpemUoKTsKICAgICBpZiAobV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgcmVzdWx0ICs9
IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICogc2l6ZW9mKHVuc2lnbmVkKSk7CisgICAg
ICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9w
ZXJ0eU9mZnNldCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvcGVydHlPZmZzZXRfaAorI2RlZmluZSBQcm9w
ZXJ0eU9mZnNldF9oCisKKyNpbmNsdWRlICJKU1R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CisjZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA2
CisjZWxzZQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA0CisjZW5kaWYKKwordHlw
ZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7CisKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBp
bnZhbGlkT2Zmc2V0ID0gLTE7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW5saW5lU3Rv
cmFnZUNhcGFjaXR5ID0gSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFk7CitzdGF0aWMgY29uc3QgUHJv
cGVydHlPZmZzZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7
CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IGludmFsaWRPZmZz
ZXQpOworfQorCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IEpTVHlwZSB0eXBlKQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9Q
QVJBTSh0eXBlKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IGludmFsaWRPZmZzZXQpOworICAgIEFT
U0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNldAorICAgICAgICAgICB8fCB0eXBlID09IEZpbmFs
T2JqZWN0VHlwZQorICAgICAgICAgICB8fCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKK30K
KworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBB
U1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZE9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsK
KyAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQ7Cit9CisKK2lubGluZSBib29sIGlz
SW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChv
ZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7Cit9CisK
K2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiAhaXNJbmxpbmVPZmZzZXQob2Zm
c2V0KTsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJU
KGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK2lubGlu
ZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
K3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc091dE9mTGluZU9m
ZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7
Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAg
IHJldHVybiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZP
dXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAg
IGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA8IGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxp
bmVPZmZzZXQgKyAxOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZz
ZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBGaW5hbE9iamVjdFR5cGUpCisgICAg
ICAgIHJldHVybiBvZmZzZXQgKyAxOworICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3Rz
Rm9yTGFzdE9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7Cisg
ICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlwZSAhPSBGaW5hbE9iamVj
dFR5cGUgJiYgb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVybiBmaXJzdE91
dE9mTGluZU9mZnNldDsKKyAgICByZXR1cm4gb2Zmc2V0ICsgMTsKK30KKworaW5saW5lIFByb3Bl
cnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IoSlNUeXBlIHR5cGUpCit7CisgICAgcmV0
dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZvcihpbnZhbGlkT2Zmc2V0LCB0eXBlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm9wZXJ0eU9mZnNldF9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAx
MjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtODksNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hlZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSAhPSBVbmNhY2hlYWJsZTsgfQogICAg
ICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3Bl
cnR5VHlwZSA9PSBWYWx1ZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1f
b2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldFZh
bHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIHNpemVfdCBvZmZzZXQpCisgICAg
ICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwog
ICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEpTQ19WQUxVRV9NQVJLRVI7CkBAIC0xNjAsNyArMTYx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2RhdGEuZ2V0dGVyRnVuYyA9IGdl
dHRlckZ1bmM7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNs
b3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIG9mZnNl
dCkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2Us
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJGdW5jKTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUg
PSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwpAQCAtMjA2LDcgKzIwNyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDbGVhciBvZmZzZXQgZXZlbiBpbiByZWxl
YXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFByb3BlcnR5U2xvdCBoYXMgYmVlbiB1c2VkIGJlZm9y
ZS4KICAgICAgICAgICAgIC8vIChGb3Igb3RoZXIgZGF0YSBtZW1iZXJzLCB3ZSBkb24ndCBuZWVk
IHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2UgcmV1c2Ugd291bGQgbWVhbmluZ2Z1bGx5IG92ZXJ3
cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1fb2Zm
c2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBlID0g
VW5jYWNoZWFibGU7CiAgICAgICAgIH0KIApAQCAtMjMyLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgICAgIEpTVmFsdWUgbV90aGlzVmFs
dWU7CiAKLSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBt
X29mZnNldDsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIG1fY2FjaGVkUHJvcGVydHlUeXBl
OwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3Bl
cnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1
dFByb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisg
ICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBFeGlzdGluZ1By
b3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKICAgICAgICAgICAgIG1fb2Zmc2V0
ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09i
amVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShK
U09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CkBA
IC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0Nh
Y2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBVbmNhY2hhYmxlOyB9Ci0gICAgICAg
IHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCgpIGNvbnN0IHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsK
ICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICAgICAgfQpAQCAtNzIsNyArNzIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAg
ICAgICAgSlNPYmplY3QqIG1fYmFzZTsKLSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsK
ICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw4ICsxNTYsOCBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9i
YWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAg
ICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAg
LCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZvLmlzRmluYWxPYmplY3QoKSA/IEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDogMCkKLSAgICAsIG1fb2Zmc2V0KG5v
T2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52
YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQog
ICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNl
dHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0xNzksOCArMTc5LDggQEAgU3RydWN0dXJlOjpTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwg
dGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbygmc19pbmZvKQogICAgICwgbV90cmFu
c2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291
dE9mTGluZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwg
bV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJv
cGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxz
ZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcmV2aW91cy0+c3Rv
cmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2aW91cy0+bV9jbGFzc0luZm8p
CiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0g
ICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHByZXZpb3VzLT5tX3Byb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNh
cGFjaXR5KHByZXZpb3VzLT5tX291dE9mTGluZUNhcGFjaXR5KQorICAgICwgbV9vZmZzZXQoaW52
YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFy
eUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwKEoKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZSk7
CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9wcmV2aW91cyk7CiAKLSAgICAgICAg
ICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGds
b2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CisgICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUg
PSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJP
ZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAg
Y3JlYXRlUHJvcGVydHlNYXAobV9vZmZzZXQgKyAxKTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlN
YXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsKIAogICAgIGZvciAocHRy
ZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAg
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0
cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6
ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5KQor
aW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50
Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0
OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6
Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZM
aW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9v
dXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxp
bmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5
U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6
OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1
cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNs
ZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
UHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcg
KzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAg
ICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+
bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFs
dWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUp
CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlv
bi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGlu
Z1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIG9mZnNl
dCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7CiAgICAgICAgIHJldHVybiBleGlzdGlu
Z1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0KIAotU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3
ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkg
YSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRl
cywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAgIG9mZnNldCA9IHRyYW5zaXRpb24t
PnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNp
emUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAg
ICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgaWYg
KHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFj
aXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsK
ICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogICAgIApAQCAtMzUzLDE1ICszNTMs
MTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIH0KIAog
ICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAodHJhbnNpdGlv
bi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRpb24tPm91
dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBh
Y2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgc3RydWN0
dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAg
cmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTggKzU0OCwxOSBAQCBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAgICAgICAgc2l6ZV90IHByb3BlcnR5
Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAgICAgICAgVmVjdG9yPEpTVmFsdWU+
IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAKICAgICAgICAgdW5zaWduZWQgaSA9
IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zmc2V0ID0gZmlyc3RQcm9wZXJ0eU9m
ZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJh
dG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAgICAgIGZvciAoUHJvcGVydHlU
YWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1ZXNbaV0gPSBvYmplY3QtPmdldERp
cmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAgICAgLy8gVXBkYXRlIHByb3BlcnR5
IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZzZXRzCi0gICAgICAgICAgICBpdGVy
LT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zmc2V0ID0gaSArIGZpcnN0T2Zmc2V0
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDb3B5IHRoZSBvcmlnaW5hbCBwcm9w
ZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlvbnMKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykKLSAgICAgICAgICAgIG9iamVjdC0+
cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVlc1tpXSk7CisgICAgICAgICAgICBv
YmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBmaXJzdE9mZnNldCArIGksIHZhbHVl
c1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVhckRlbGV0ZWRPZmZzZXRzKCk7
CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVu
RGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBB
U1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3OSwxMyArNTgwLDEzIEBAIHNpemVf
dCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4KICAgICAKICAgICBwaW4oKTsKIAot
ICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHByb3BlcnR5U3RvcmFn
ZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIGdyb3dQcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHB1dFNwZWNp
ZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4gb3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAg
ICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAot
c2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9m
ZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEFTU0VS
VChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25D
YWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5p
bmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcmVtb3Zl
KHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAgICByZXR1cm4gcmVtb3ZlKHBy
b3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpwaW4oKQpAQCAtNjM5LDIwICs2Mzks
MjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcAogCiBQYXNzT3du
UHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5n
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25lcikKIHsKLSAgICByZXR1
cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0
YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobV9vZmZzZXQg
PT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9w
ZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3Bl
cnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVyT2ZTbG90c0Zvckxhc3RPRmZzZXQo
bV9vZmZzZXQpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFs
aWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJs
ZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsK
IAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVl
ID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZp
Y1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09
IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQoZ2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmli
dXRlcyAmIERvbnRFbnVtKQpAQCAtNjk4LDEyICs2OTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpw
dXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAg
IGNyZWF0ZVByb3BlcnR5TWFwKCk7CiAKLSAgICB1bnNpZ25lZCBuZXdPZmZzZXQ7Ci0KLSAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCi0gICAgICAgIG5ld09mZnNl
dCA9IG1fcHJvcGVydHlUYWJsZS0+Z2V0RGVsZXRlZE9mZnNldCgpOwotICAgIGVsc2UKLSAgICAg
ICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CisgICAgUHJvcGVydHlPZmZz
ZXQgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0KG1fdHlwZUluZm8udHlw
ZSgpKTsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFs
RGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsK
IApAQCAtNzExLDcgKzcwNiw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUo
SlNHbG8KICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1v
dmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogCkBAIC03MjQsNyArNzE5LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3Bl
cnR5TmFtZSBwcgogICAgIGlmICghcG9zaXRpb24uZmlyc3QpCiAgICAgICAgIHJldHVybiBub3RG
b3VuZDsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OworICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CiAKICAgICBt
X3Byb3BlcnR5VGFibGUtPnJlbW92ZShwb3NpdGlvbik7CiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5h
ZGREZWxldGVkT2Zmc2V0KG9mZnNldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3Rh
dGlzdGljcygpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBh
ZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXpl
X3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYg
b2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRk
UHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
UHJvcGVydHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAgLTEwMywzMiArMTAzLDMyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRl
bnNpb25zOyB9CiAgICAgICAgIGJvb2wgZGlkVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlkVHJhbnNpdGlvbjsgfQotICAgICAgICBib29sIHB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdl
KCkKKyAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBwcm9wZXJ0
eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkg
Pj0gb3V0T2ZMaW5lU2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFtX3By
b3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpOwotICAgICAgICAgICAgICAgIEFTU0VS
VChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IG51bWJlck9mT3V0T2ZMaW5lU2xv
dHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3V0T2ZM
aW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRTaXplID09IG91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1f
cHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VS
VCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9y
YWdlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRP
ZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlU
YWJsZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnNpemUo
KSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFs
U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOworICAgICAgICAg
ICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHRvdGFsU3RvcmFnZUNhcGFjaXR5
KCk7CiAgICAgICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3Rl
ZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNp
emVfdCBzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCiAKICAgICAgICAg
U3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09i
amVjdCopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAg
ICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCi0gICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UHJvcGVydHlPZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5
cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpOyB9
CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGljdGlvbmFyeUtpbmQgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBAIC0xNDksMTggKzE0OSwx
MDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVD
aGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJ
RCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsg
cmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lE
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgp
OworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAgICAgdm9pZCBncm93UHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7
IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9Ci0gICAgICAgIHVuc2lnbmVkIHBy
b3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxl
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQg
KyAxKSk7IH0KLSAgICAgICAgc2l6ZV90IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0Owot
ICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7Ci0KLSAgICAgICAgc2l6
ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBzaXplX3QgZ2V0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQm
IGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICB2b2lkIGdyb3dP
dXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0
eTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZv
LnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlU
YWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlU
YWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNp
emUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVTdG9yYWdlQ2FwYWNp
dHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVT
bG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVk
IG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9IEZpbmFsT2JqZWN0VHlwZSk7
CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVy
biBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSAtIGlubGluZVN0b3JhZ2VD
YXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFz
dE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5l
U2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxl
KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxl
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5saW5l
Q2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNp
emUgPCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zm
c2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2Uo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBlKCkg
PT0gRmluYWxPYmplY3RUeXBlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3Jh
Z2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lU2l6
ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQobV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAx
OworICAgICAgICAgICAgaWYgKHJlc3VsdCA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUtub3du
RmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VT
aXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9v
ZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZUNhcGFjaXR5
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFj
aXR5ICsgaW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IGZpcnN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
c2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAg
ICAgICAgIGlmICghaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgICAgICBzaXpl
ICs9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSAt
IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CisgICAgICAg
IH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBn
ZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAg
ICAgICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQ
cm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRp
ZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMTc3LDcgKzI2OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllczsgfQogICAgICAgICAKLSAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRh
YmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQorICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxl
KQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKTsKKyAg
ICAgICAgICAgIHJldHVybiAhaXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlv
bihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVj
aWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0g
bWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzY5LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9p
ZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICszOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1l
IGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBz
dG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAw
IDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAt
MzEwLDggKzQwNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBub09mZnNldCA9IC0xOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVj
aWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUlu
Zm87CkBAIC0zMzYsMTAgKzQzMCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIG11dGFibGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0
OwogCi0gICAgICAgIHVpbnQzMl90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAg
IHVpbnQzMl90IG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9l
cyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9k
aWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUg
OiAxOwpAQCAtMzUzLDI2ICs0NDcsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90
IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAg
ICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAg
ICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsK
KyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFw
RW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSku
Zmlyc3Q7Ci0gICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsK
KyAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAg
ICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0g
JnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1
cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAg
ICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJp
bmcobmFtZS5pbXBsKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zm
c2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBp
bnZhbGlkT2Zmc2V0OwogICAgIH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpz
dHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150535</attachid>
            <date>2012-07-02 22:40:41 -0700</date>
            <delta_ts>2012-07-02 23:10:37 -0700</delta_ts>
            <desc>fixing some compiler errors</desc>
            <filename>overflowstorage_patch_9.diff</filename>
            <type>text/plain</type>
            <size>219087</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NiBA
QAorMjAxMi0wNy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhM
b2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhB
ZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6
CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6
cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRM
b2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAg
ICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29k
ZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3Bl
cnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAg
ICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5
VG9TdHViSW5mbyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm86OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNo
R2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlk
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAg
ICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20veDg2LnJiOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
cm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRE
aXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpoYXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0
b3JhZ2VVbnNhZmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9m
ZnNldEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
Tm9uRmluYWxPYmplY3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZp
bmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0ZpbmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRP
dXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjppbmRleFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFBy
b3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0
eU1hcEVudHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
Z2V0RGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJ
bmxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAg
IChKU0M6Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNl
dEZvcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6
OnNldFZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAg
ICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVy
dHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlT
bG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2Fj
aGVkT2Zmc2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAg
IChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25O
b25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppbmxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0Vt
cHR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTItMDctMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgT1NSIGV4aXQgdmFsdWUgcmVjb3ZlcmllcyBz
aG91bGQgYmUgY29tcHV0ZWQgbGF6aWx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2Miw2ICs1NjIsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwg
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBsYWJlbCgp
OworICAgIH0KICNlbmRpZgogICAgIAogICAgIExhYmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs2Nzcs
MTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJl
YWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKKyAg
ICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9j
YXRpb24oKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0
aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDI0IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0
aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZXBs
YWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
KyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNB
Y3RpdmUoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwsIGJvb2wgaXNBY3RpdmUpCisgICAgeworICAg
ICAgICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAgICByZXBsYWNlV2l0aExvYWQobGFiZWwpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihs
YWJlbCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiA1OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAg
ICAgICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRy
Kys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9W
X0d2RXY6CisgICAgICAgICAgICAqcHRyID0gT1BfTEVBOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJl
bCBjYWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRC
eUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdl
dF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVh
azsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
c2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzMyw2ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46
CkBAIC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfcmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwogICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAg
ICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBA
IC0yMDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAg
ICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgp
KQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBmYWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwg
U3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICAg
ICAgCiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAogICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAt
MTU2LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkp
IHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAg
ICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5v
dEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgc2l6ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQobXlPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0x
OTYsNyArMTk2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9
IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlQocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJU
KCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCi0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCkgeworICAgIGlmICgh
aXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgIHJlc3VsdC5tX3N0YXRl
ID0gVGFrZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7
CiAgICAgICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgR2V0QnlJZFN0YXR1c19oCiAjZGVmaW5l
IEdldEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIApAQCAtNDYsMTMg
KzQ3LDEzIEBAIHB1YmxpYzoKIAogICAgIEdldEJ5SWRTdGF0dXMoKQogICAgICAgICA6IG1fc3Rh
dGUoTm9JbmZvcm1hdGlvbikKLSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAg
LCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgR2V0QnlJ
ZFN0YXR1cygKICAgICAgICAgU3RhdGUgc3RhdGUsIGJvb2wgd2FzU2VlbkluSklULCBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNldCgpLAotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gbm90Rm91bmQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwg
VmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCisgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBK
U1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigp
KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlU2V0KQogICAgICAgICAsIG1fY2hhaW4oY2hhaW4pCkBAIC03Niw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYg
dGhpcyBpcyBhIGRpcmVjdCBhY2Nlc3MuCiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNWYWx1ZSgpIGlmIHRo
ZXJlIGlzIG5vIHNwZWNpZmljIHZhbHVlLgotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJl
dHVybiBtX3dhc1NlZW5JbkpJVDsgfQogICAgIApAQCAtODgsNyArODksNyBAQCBwcml2YXRlOgog
ICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBWZWN0b3I8U3RydWN0dXJlKj4g
bV9jaGFpbjsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3QgbV9vZmZz
ZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJ
VDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJl
dmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGlu
ZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF90aGlzLCA1KSAvKiBoYXMgdmFs
dWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkLCA5KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0
X2J5X2lkX3NlbGYsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNy
byhvcF9nZXRfYnlfaWRfcHJvdG8sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYnlfaWRfY2hhaW4sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcg
Ki8gXApAQCAtMTIyLDkgKzEyMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8o
b3BfZ2V0X3N0cmluZ19sZW5ndGgsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWQsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX291dF9vZl9saW5l
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCisgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSwgOSkgXAog
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBpZiAoIXN0cnVj
dHVyZSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOwogICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9wdXRfYnlfaWQpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9m
ZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkCisgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkgeworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52
YWxpZE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1w
bGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3
LDE4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NF
UlQoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKICAgICAKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ci0gICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAg
ICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9
PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUKKyAgICAg
ICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNoYWluKTsKICAgICAKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+
Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFs
aWRPZmZzZXQpOwogICAgIAogICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRp
b24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKICNlbHNlCkBAIC05
NCwyNCArOTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNl
OiB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJh
c2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCiAgICAg
ICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlm
IChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAg
U2ltcGxlUmVwbGFjZSwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNl
LmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAg
ICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAg
fQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CiAgICAgICAg
IEFTU0VSVChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQo
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5z
aXRpb24uc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwKICAgICAgICAgICAg
ICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgp
LApAQCAtMTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hh
aW4uZ2V0KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFs
aWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zm
c2V0KTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5lIFB1dEJ5SWRTdGF0dXNf
aAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX29sZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKDApCiAgICAgICAg
ICwgbV9zdHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAg
ICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBz
dHJ1Y3R1cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9vbGRT
dHJ1Y3R1cmUob2xkU3RydWN0dXJlKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVj
dHVyZSkKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKG1fc3RhdGUg
PT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09ICFtX29sZFN0
cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9
PSAhbV9uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJh
bnNpdGlvbikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBBU1NFUlQoKG1fc3RhdGUg
PT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNl
dCA9PSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlv
biB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBpbnZhbGlkT2Zm
c2V0KSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOwpAQCAtOTAs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1cmVDaGFpbiogc3Ry
dWN0dXJlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNoYWluOyB9Ci0gICAgc2l6
ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25l
d1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1cmVDaGFpbjsKLSAgICBz
aXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNv
bHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQCBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBj
b21wdXRlRm9yU3RyCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKmNv
ZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGVzSWdub3JlZCwgc3Bl
Y2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoKTsK
ICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhSZXNvbHZlR2xvYmFsU3RhdHVz
OjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMu
aAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
c29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2Rl
ZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNs
dWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBS
ZXNvbHZlR2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAgIFN0YXRlIHN0YXRl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFs
aWRPZmZzZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSkKICAg
ICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlKHN0cnVjdHVyZSkK
QEAgLTcwLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9CiAgICAgCiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQotICAgIHNpemVf
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgSlNWYWx1ZSBzcGVjaWZp
Y1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAKIHByaXZhdGU6CiAg
ICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwotICAgIHNpemVf
dCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBKU1ZhbHVlIG1f
c3BlY2lmaWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNp
b24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIHB1YmxpYzoKICAgICAKICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5zaXplKCk7IH0KICAg
ICAKLSAgICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJlc1tpXS0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8vIENhbGwgdGhpcyBpZiB5b3Uga25v
dyB0aGF0IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lzdCBvZiBleGFjdGx5CiAgICAgLy8g
b25lIHN0cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvblN0cnVjdHVyZSgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7CiAg
ICAgICAgICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFI7CiAgICAgICAgICAgICAgICAgaW50MzJf
dCBkZWx0YUNhbGxUb0RvbmU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0
b3JhZ2VMb2FkOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVj
azsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7CiAgICAgICAg
ICAgICAgICAgaW50MzJfdCBkZWx0YUNoZWNrSW1tVG9DYWxsOwpAQCAtMjE5LDYgKzIyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZUNoZWNrOworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAg
LTIzMCw2ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgfSBn
ZXQ7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDE2X3QgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihib29sIHVzZXNSZXN1bHQsIGludCBy
ZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAg
ICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFz
ZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAgICAgYm9vbCB1c2VJbmxpbmVTdG9y
YWdlLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKICAg
ICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNw
ZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwK
ICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFn
ZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7
CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFn
ZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkg
LyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7CisgICAgZWxzZQogICAgICAg
ICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7
Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9w
ZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJ
bmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlv
biksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFn
ZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zm
c2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNl
dCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5p
ZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFn
ZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3
Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAg
ICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3Ry
dWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0g
ICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigp
LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRC
eUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBK
U09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVy
ZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1
Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlz
VXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3Jh
Z2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVy
dHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlr
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQg
dG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lk
IGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBo
YW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9u
LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRC
eUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0
aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0K
IAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMjU5LDI1
ICsyMjUwLDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVz
LmlzU2ltcGxlUmVwbGFjZSgpKSB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHB1dEJ5SWRTdGF0dXMub2xk
U3RydWN0dXJlKCkpKSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNl
dDsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAg
ICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0
dXMub2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNl
OwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBz
aXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAg
ICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0
b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIHByb3BlcnR5U3RvcmFnZSwgYmFzZSwgdmFsdWUpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3Jh
Z2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9
IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAgICAg
c3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShwdXRCeUlkU3Rh
dHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlm
aWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
c3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIWhhc0V4aXRTaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5
SWRTdGF0dXMuaXNTaW1wbGVUcmFuc2l0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYg
cHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9
PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
CisgICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkgPT0gcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmVDaGFp
bklzU3RpbGxWYWxpZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCksCkBAIC0y
MzA4LDE2ICsyMjk0LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5uZXdTdHJ1
Y3R1cmUoKSkpKSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSk7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAgICAgICAgICAgICAgICBO
b2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3Rh
dHVzLm5ld1N0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKQogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwot
ICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9H
cmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZz
ZXRPZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKAogICAgICAgICAgICAgICAgICAgICBQdXRCeU9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLApAQCAtMjMyNiw3
ICsyMzA3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAg
c3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNl
dE9mZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRl
eFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAg
IHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwog
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFn
ZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI3MzgsOCArMjcxOSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRp
Y3Rpb24sIGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJO
dW1iZXIsIHN0YXR1cy5zdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXR1cy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVOdW1i
ZXIrKzsgLy8gU2tpcCBvdmVyIHRoZSB1bnVzZWQgZ2xvYmFsIHJlc29sdmUgaW5mby4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3IEBAIHZvaWQgSklUQ29tcGlsZXI6Omxp
bmsoTGlua0J1ZmZlciYgbGlua0IKICNlbmRpZgogICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2Nh
dGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Nsb3dQ
YXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2Fs
bFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxp
bmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9kb25lKSk7CisgICAg
ICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBkaWZmZXJlbmNlQmV0
d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9w
cm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlTdG9yYWdlTG9hZCkpOwogICAgICAgICBpbmZv
LnBhdGNoLmRmZy5iYXNlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fYmFzZUdQUjsKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1ZUdQUiA9IG1fcHJv
cGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiAr
MTM2LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVj
dHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJl
Q2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
LAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9yZSwK
ICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKQEAgLTE0OCw2ICsxNDksNyBAQCBzdHJ1Y3QgUHJv
cGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkT3JTdG9yZSwKICAgICAgICAgU2xv
d1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApAQCAtMTYxLDYgKzE2Myw3IEBAIHN0
cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVP
cmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3RydWN0dXJlSW1tKQogICAgICAgICAs
IG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICwgbV9wcm9wZXJ0eVN0
b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3JlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
QEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgIENv
ZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIg
bV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1
Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VM
b2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENv
bXBhY3QgbV9sb2FkT3JTdG9yZTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBj
bwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0K
IAotc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
aXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBj
b21wYWN0KQorc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1
bmN0aW9uLCBib29sIGNvbXBhY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KGNvZGVCbG9jayk7CiAKQEAgLTUyLDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNo
QnlJZFNlbGZBY2Nlc3MoQ29kCiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYg
dGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJl
cGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIGlmIChjb21wYWN0KQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVUb1BhdGNo
ZWRTdG9yYWdlKG9mZnNldCkpOwogICAgIGVsc2UKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICog
b2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVUb1BhdGNo
ZWRTdG9yYWdlKG9mZnNldCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoY29t
cGFjdCkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRM
b2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBh
Y3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSks
IHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
UGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0UmVsYXRpdmVUb1Bh
dGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9IGVsc2UgewotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZn
LmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9U
YWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldFJl
bGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0x
MDUsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgbGlua1Jlc3RvcmVTY3JhdGNoKExpbmtCdWZmZQog
ICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gs
IHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFp
bkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBzaXplX3Qgb2Zmc2V0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9j
YXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIHN0dWJSb3V0
aW5lKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xv
d0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKIHsKICAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkBAIC0xMzks
MTMgKzE0MCwyMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAg
ICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBpdC0+Z2V0KCk7CiAgICAgfQogICAgIAotICAgIHN0dWJK
aXQubG9hZFB0cihwcm90b09iamVjdC0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3Vs
dEdQUik7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpIHsKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLCByZXN1bHRHUFIpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKLSAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgc3R1YkppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKICNl
bmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+
YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHRHUFIpOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikpLCByZXN1bHRHUFIpOworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisjZW5kaWYKKyAg
ICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBmYWlsOwogICAgIApAQCAt
MzQ5LDEyICszNjAsMjAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3Rh
dAogICAgICAgICAgICAgfHwgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNs
b3Q6OkN1c3RvbSkgewogICAgICAgICAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkg
PT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUdQ
UiAhPSBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
c2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgc2NyYXRjaEdQUik7Ci0jZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnBheWxvYWQpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BS
KTsKICNlbmRpZgorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0dWJK
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZW5kaWYKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYmFzZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25DYWxsR2V0dGVyOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTM4NSwxMyArNDA0LDIyIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhl
Y1N0YXQKICAgICAgICAgICAgIGhhbmRsZXJDYWxsID0gc3R1YkppdC5jYWxsKCk7CiAgICAgICAg
ICAgICBzdHViSml0Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKLSAgICAg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHJlc3VsdEdQ
Uik7CisjZWxzZQorICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hl
ZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBz
dHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAg
ICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7
CiAjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1
bXAoKTsKICAgICAgICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNTY3LDcg
KzU5NSw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlciBzdHViSml0OwogICAgIAotICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRH
UFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRlZCB8fCAhc3RydWN0dXJlLT5pc1VzaW5nSW5saW5l
U3RvcmFnZSgpKSkgeworICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgKHdy
aXRlQmFycmllck5lZWRlZCB8fCBpc091dE9mTGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkpIHsKICAgICAgICAgc2NyYXRjaEdQUiA9IFNwZWN1bGF0aXZlSklUOjpzZWxlY3RTY3JhdGNo
R1BSKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSB0
cnVlOwogICAgICAgICBzdHViSml0LnB1c2goc2NyYXRjaEdQUik7CkBAIC01ODYsMjAgKzYxNCwy
MCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAjZW5kaWYKICAgICAKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkp
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
c2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIH0KICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBv
ZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBz
Y3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2Yo
SlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9m
ZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZh
bHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAg
ICB9CiAjZW5kaWYKICAgICAKQEAgLTY4NSwyMCArNzEzLDIwIEBAIHN0YXRpYyB2b2lkIGVtaXRQ
dXRUcmFuc2l0aW9uU3R1YigKIAogICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
aWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgc3R1YkppdC5z
dG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0
SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0
Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BS
KTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAgICAg
IHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQo
KSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFn
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHVi
Sml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAg
ICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAg
IHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
b2Zmc3RJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAg
ICAgICAKQEAgLTc1Miw3ICs3ODAsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhl
Y1N0YXRlKiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJl
YWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAg
ICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2Vs
bCk7CkBAIC04MTUsNyArODQzLDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChF
eGVjU3RhdAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFs
bG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDUs
NiArNTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENv
bXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KC0xKSkpOwogICAgIAorICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkID0gbV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBKSVRDb21waWxlcjo6
RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMyV2l0aENvbXBh
Y3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwg
cmVzdWx0VGFnR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBwYXlsb2Fk
TG9hZFdpdGhQYXRjaCA9IG1faml0LmxvYWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNo
KEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKQEAgLTU0Nyw3ICs1NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KENvZGVPCiAgICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29t
cGFyZSwgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAg
ICAgdGFnTG9hZFdpdGhQYXRjaCwgcGF5bG9hZExvYWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgp
LCBkb25lTGFiZWwsCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BS
KSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpLAogICAgICAgICAgICAgc2FmZUNhc3Q8
aW50OF90PihyZXN1bHRQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSwK
QEAgLTU2Miw2ICs1NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPCiAKICAgICB3cml0ZUJhcnJpZXIoYmFzZVBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1
ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCisgICAg
SklUQ29tcGlsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNj
cmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiB0YWdTdG9yZVdpdGhQYXRj
aCA9IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlVGFnR1BSLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIg
cGF5bG9hZFN0b3JlV2l0aFBhdGNoID0gbV9qaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0
Y2godmFsdWVQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CkBA
IC01OTQsNyArNTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2Rl
TwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21w
YXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAog
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0
aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwg
c2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksCkBAIC0zNTQzLDcgKzM1NDUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAg
ICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDk0LDcgKzQ5NCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8K
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBK
SVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwor
ICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQubGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1
bHRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRXaXRoUGF0Y2gg
PSBtX2ppdC5sb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCAwKSwgcmVzdWx0R1BSKTsKICAgICAKICAgICBKSVRDb21waWxl
cjo6TGFiZWwgZG9uZUxhYmVsID0gbV9qaXQubGFiZWwoKTsKQEAgLTUxNCw4ICs1MTUsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgfQogICAgIG1faml0
LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAg
ICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGxv
YWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLAotICAgICAgICAgICAgZG9uZUxhYmVsLCBzYWZl
Q2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUiksCisgICAg
ICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBw
cm9wZXJ0eVN0b3JhZ2VMb2FkLCBsb2FkV2l0aFBhdGNoLAorICAgICAgICAgICAgc2xvd1BhdGgu
Z2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50
OF90PihyZXN1bHRHUFIpLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BS
KSwKICAgICAgICAgICAgIHNwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCA/IFByb3BlcnR5QWNjZXNz
UmVjb3JkOjpSZWdpc3RlcnNJblVzZSA6IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNG
bHVzaGVkKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsK
QEAgLTUzMyw3ICs1MzQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPCiAKICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIHZhbHVlVXNlLCBXcml0
ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgSklUQ29tcGlsZXI6OkxhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpE
YXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwog
CiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01
NjMsNyArNTY1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8K
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZh
bHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVy
KSk7CiAgICAgfQotICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVj
b3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0
aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxp
bnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1f
aml0LmFkZFByb3BlcnR5QWNjZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAg
ICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ss
IHByb3BlcnR5U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVs
Q29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJl
bCwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhf
dD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU2Nyw3ICszNTcz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODgzLDkgKzM4ODksMTUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBz
dHJ1Y3R1cmVzRG9udE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29s
dmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0lubGluZSA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6Okxlc3NUaGFuLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGF2ZVN0b3JhZ2Ug
PSBtX2ppdC5qdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmsoJm1faml0KTsKKyAgICAgICAg
bV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdl
KCkgKyBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgZ2xv
YmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOworICAgICAgICBoYXZlU3RvcmFnZS5saW5rKCZtX2pp
dCk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRH
UFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQdHIsIC1pbmxpbmVTdG9yYWdl
Q2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxODAsOCArMjE4MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9y
SUQoKSkpOwogICAgICAgICAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJv
cGVydHkgc3RvcmFnZSBwb2ludGVyLgotICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BS
KTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsK
KyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgQ2xhc3NUeXBlOjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSkpOwogICAgIH0KIAogICAgIC8vIEl0IGlzIGFjY2VwdGFibGUgdG8g
aGF2ZSBzdHJ1Y3R1cmUgYmUgZXF1YWwgdG8gc2NyYXRjaCwgc28gbG9uZyBhcyB5b3UncmUgZmlu
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lv
biAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKAogICAgIH0KIAogICAgIGlmIChpc0pTRmluYWxPYmplY3QoY2VsbCkp
IHsKLSAgICAgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihj
ZWxsKSwgdmlzaXRvcik7CisgICAgICAgIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29u
c3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcxNyw3ICszNzE3
LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNWYWx1ZSBleHBlY3RlZFN1YnNj
cmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgpOwogICAgICAgICBpbnQgaW5k
ZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0g
ICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSAw
OwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vic2NyaXB0ICYmIGJhc2VWYWx1
ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSA9PSBpdC0+Y2Fj
aGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgsIG9mZnNldCkpIHsKICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShhc09iamVjdChiYXNl
VmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2FjdGl2YXRpb24p
CiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX09QKG9wX2VxX251bGwp
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpAQCAtMzE5LDggKzMyMCwxMSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3Bl
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTUzNyw2ICs1
NDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQu
c3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldFN0cnVj
dHVyZVRvQ29tcGFyZSkpOwogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVj
dHVyZUNoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQ
YXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldFN0cnVjdHVyZUNoZWNr
KSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9h
ZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2lu
TG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNw
bGFjZW1lbnRMYWJlbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
aG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1l
bnRMYWJlbCkpOwogI2Vsc2UKQEAgLTU1MCw2ICs1NTUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
UHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbCBob3RQYXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZiho
b3RQYXRoQmVnaW4pOwogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0cnVjdHVy
ZVRvQ29tcGFyZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90
UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXRTdHJ1Y3R1cmVUb0Nv
bXBhcmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3Jh
Z2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRo
QmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQp
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0
LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3Bs
YWNlbWVudExhYmVsKSk7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW47CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxQdHIgZ2V0U3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBnZXRTdHJ1Y3R1cmVDaGVjazsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZ2V0RGlzcGxhY2VtZW50TGFiZWw7
CiAjZWxzZQpAQCAtMTg1LDE3ICsxODYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAog
Ci0gICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlk
X1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRo
QmVnaW4sCisgICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbygKKyAgICAgICAgICAg
IFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbCwgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxD
b21wYWN0IGRpc3BsYWNlbWVudExhYmVsLAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBk
aXNwbGFjZW1lbnRMYWJlbDIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJl
bDEsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFj
ZW1lbnRMYWJlbDIsCiAjZW5kaWYKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBw
dXRSZXN1bHQpCiAgICAgICAgICAgICA6IG1fdHlwZShHZXRCeUlkKQogICAgICAgICAgICAgLCBi
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAsIGhvdFBhdGhCZWdpbiho
b3RQYXRoQmVnaW4pCiAgICAgICAgICAgICAsIGdldFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1
cmVUb0NvbXBhcmUpCiAgICAgICAgICAgICAsIGdldFN0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNo
ZWNrKQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxv
YWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgZ2V0RGlzcGxhY2VtZW50TGFi
ZWwoZGlzcGxhY2VtZW50TGFiZWwpCiAjZWxzZQpAQCAtMjA2LDE1ICsyMTQsMjEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbygKKyAgICAgICAgICAgIFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdp
biwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9D
b21wYXJlLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVs
MzIgZGlzcGxhY2VtZW50TGFiZWwpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRp
c3BsYWNlbWVudExhYmVsMikKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwz
MiBkaXNwbGFjZW1lbnRMYWJlbDEsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyCiAjZW5kaWYKKyAgICAgICAgICAgICkKICAgICAgICAg
ICAgIDogbV90eXBlKFB1dEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikKKyAgICAg
ICAgICAgICwgcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogICAgICAg
ICAgICAgLCBwdXRTdHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJlVG9Db21wYXJlKQogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAsIHB1dERpc3BsYWNlbWVudExhYmVsKGRpc3BsYWNl
bWVudExhYmVsKQpAQCAtMjk1LDQwICszMDksNDAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gSklUKGdsb2JhbERhdGEsIGNvZGVCbG9jaykucHJpdmF0ZUNvbXBpbGUoZnVu
Y3Rpb25FbnRyeUFyaXR5Q2hlY2ssIGVmZm9ydCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQor
ICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFs
RGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1
YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG8oc3R1YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVudCwg
c2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNT
dHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERh
dGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJ
bmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KHN0dWJJbmZvLCBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGN1cnJlbnRJbmRleCwg
c3RydWN0dXJlLCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgfQotICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBy
b3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAg
ICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBw
cm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2sp
OwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qoc3R1
YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7
CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNp
emVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hh
aW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJl
bnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVj
b2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVM
aXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwg
Y2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXpl
X3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
KyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0
KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNl
dCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIGNoYWluLCBjb3VudCwgaWRlbnQs
IHNsb3QsIGNhY2hlZE9mZnNldCwgcmV0dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4s
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCisgICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJ
VCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2Rl
T2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CkBAIC0zNTgsOCArMzcyLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaEdldEJ5SWQoUmVw
YXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJl
c2V0UGF0Y2hQdXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwotICAg
ICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0
QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3Ry
dWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBib29sIGRpcmVjdCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYo
Q29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
OworICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29k
ZWJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYs
IENvZGVCbG9jayogY29kZWJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRyZXNzUHRy
KTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MpCkBAIC0zNzcsMTIgKzM5MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCk7CiAgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKICAgICAgICAgSklUQ29kZSBwcml2YXRlQ29tcGlsZShD
b2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRpb25FZmZvcnQpOwot
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZv
KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0g
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVT
dHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0g
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHVi
SW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7
CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7
CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1
YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGlu
dCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQs
IENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVy
ZSosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hh
aW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKIAogICAg
ICAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHByaXZhdGVDb21waWxlQ1RJ
TWFjaGluZVRyYW1wb2xpbmVzKEpTR2xvYmFsRGF0YSosIFRyYW1wb2xpbmVTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgTGFiZWwgcHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKEpTR2xvYmFsRGF0YSos
IGJvb2wgaXNDb25zdHJ1Y3QgPSBmYWxzZSk7CkBAIC00NjgsMTAgKzQ4MiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aCgpOwogICAgICAg
ICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNlVlJl
ZywgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIsIGJvb2wgaXNNZXRob2RDaGVjayA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lz
dGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQg
Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRU
YWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAg
ICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVj
dCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVy
SUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBp
bGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBS
ZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZv
aWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFs
dWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQpOwogCiAgICAgICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9p
ZCBlbWl0QWRkMzJDb25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNv
bnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MSwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZS
ZWcsIElkZW50aWZpZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGlu
dCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7
Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7Ci0gICAg
ICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXRE
aXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlz
aW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9k
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjksMTEgKzQyOSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHIKICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBB
ZGRyZXNzKHJlc3VsdCwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSkpOwogCiAgICAg
Ly8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCi0gICAg
aWYgKENsYXNzVHlwZTo6aGFzSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoc2l6ZW9mKEpTT2JqZWN0KSksIHJlc3VsdCwgc3RvcmFnZVB0cik7Ci0gICAgICAg
IHN0b3JlUHRyKHN0b3JhZ2VQdHIsIEFkZHJlc3MocmVzdWx0LCBDbGFzc1R5cGU6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RvcmVQdHIoVHJ1c3Rl
ZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSkpOworICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0
LCBDbGFzc1R5cGU6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3Qo
VCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMs
OCBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1w
IHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21w
YXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERl
ZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAg
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFMYWJlbENv
bXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNl
dFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMCk7
IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiA9IGxv
YWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QyLCBwYXRjaEdl
dEJ5SWREZWZhdWx0T2Zmc2V0KSwgcmVnVDEpOyAvLyB0YWcKICAgICAKQEAgLTM0MSw3ICszNDIs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICAKICAgICBFTkRfVU5J
TlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAotICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9u
SW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVudExhYmVsMSwg
ZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29t
cGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRM
YWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTM5OSw3ICs0MDAsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgRGF0YUxhYmVsUHRy
IHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHJXaXRoUGF0Y2go
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0
Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QxKTsKKyAg
ICBMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkpLCByZWdUMSk7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxID0g
c3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1QyLCBBZGRyZXNzKHJlZ1QxLCBwYXRj
aFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWwzMiBkaXNw
bGFjZW1lbnRMYWJlbDIgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDMsIEFk
ZHJlc3MocmVnVDEsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsgLy8gdGFnCiAgICAgCkBA
IC00MDcsNyArNDA5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9u
KgogCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIsIHJlZ1QxLCByZWdUMiwgU2hv
dWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0g
ICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29t
cGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBh
dGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNl
bWVudExhYmVsMikpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5k
KFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVj
b2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgcHJvcGVydHlTdG9y
YWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDMwLDMw
ICs0MzIsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogfQog
CiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAg
TWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9h
ZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBh
eWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0g
Y2FjaGVkT2Zmc2V0OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIGVtaXRTdG9yZShvZmZzZXQsIHZhbHVl
VGFnLCB2YWx1ZVBheWxvYWQsIGJhc2UpOworICAgIGlmIChpc091dE9mTGluZU9mZnNldChjYWNo
ZWRPZmZzZXQpKQorICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q7Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgZW1pdFN0b3JlKGluZGV4UmVsYXRp
dmVUb0Jhc2UoY2FjaGVkT2Zmc2V0KSwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CiB9
CiAKIC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4g
IE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zm
c2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVz
dWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGludCBvZmZz
ZXQgPSBjYWNoZWRPZmZzZXQ7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkp
IHsKKyAgICAgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCB2
YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQYXlsb2FkOwogICAgIGxvYWRQdHIoQWRk
cmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwot
ICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAg
ICBlbWl0TG9hZChpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHJlc3VsdFRhZywg
cmVzdWx0UGF5bG9hZCwgdGVtcCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zm
c2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1
bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklE
IHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBsb2Fk
UHRyKGJhc2UtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRUYWcpOwotICAgIGxv
YWQzMihBZGRyZXNzKHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkp
LCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9m
ZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChpc0lubGluZU9mZnNl
dChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihiYXNlLT5sb2Nh
dGlvbkZvck9mZnNldChjYWNoZWRPZmZzZXQpKSwgcmVzdWx0VGFnKTsKKyAgICAgICAgbG9hZDMy
KEFkZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5
bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFn
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZP
dXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdFRhZyk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0
VGFnLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBy
ZXN1bHRUYWcpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlv
bihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIC8v
IFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCByZWdUMCBjb250YWlucyB0aGUgYmFzZVBheWxv
YWQgYW5kIHJlZ1QxIGNvbnRhaW5zIHRoZSBiYXNlVGFnLiBSZXN0b3JlIHRoZW0gZnJvbSB0aGUg
c3RhY2suCiAjaWYgQ1BVKE1JUFMpIHx8IENQVShTSDQpIHx8IENQVShBUk0pCkBAIC01NTMsNyAr
NTY2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIHJl
cGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVM
b2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBK
SVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpwYXRjaEdldEJ5SWRT
ZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZm
ZXIoY29kZUJsb2NrKTsKICAgICAKQEAgLTU2NSwxMSArNTc4LDEyIEBAIHZvaWQgSklUOjpwYXRj
aEdldEJ5SWRTZWxmKENvZGVCbG9jayogY28KIAogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50
byB0aGUgcHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVy
ZSB0byBsb29rIGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQuc3RydWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCAr
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQK
LSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFi
ZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNl
bWVudExhYmVsMiksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKTsgLy8gdGFnCisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2
ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNo
ZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
Z2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShv
ZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8g
cGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2lu
LmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQu
ZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNl
dCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQog
Ci12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkK
K3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBk
aXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAg
ICAgCkBAIC01ODEsOCArNTk1LDkgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29k
ZUJsb2NrKgogCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFw
IHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0
ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBh
cmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90
UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
cHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5w
YXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZm
ZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJl
bEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC51LnB1dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNP
dXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0UmVsYXRpdmVUb1Bh
dGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
cGF5bG9hZCkpOyAvLyBwYXlsb2FkCisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxp
bmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9y
YWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8v
IHRhZwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTYyOSw3ICs2NDQsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRf
YnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFBhdGNoZWRPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtNzAw
LDcgKzcxNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHIKIH0K
IAogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3Jw
aGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpT
Q2VsbCoKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVj
dHVyZSk7CkBAIC03NjAsNyArNzc1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQg
Y3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC04MjksNyArODQ0LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29k
ZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAg
aG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAgLTkwNCw3ICs5MTksNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2Rl
KCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNv
dW50KTsKQEAgLTk3OSw5ICs5OTQsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZQogewogICAgIEFTU0VSVChzaXplb2YoSlNWYWx1ZSkgPT0gOCk7CiAgICAgCi0g
ICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpKSwgYmFzZSk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQ
YXlsb2FkKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAg
ICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMy
KGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7CisgICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAgICBhZGRQdHIoVHJ1c3RlZElt
bVB0cihKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgYmFzZSk7CisgICAgZG9uZS5saW5rKHRo
aXMpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkgLSBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgbG9h
ZDMyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksIHJlc3VsdFRhZyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTAwNiw2ICsxMDI2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGxvYWQz
MihhZGRyZXNzRm9yKGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdU
Myk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMywgQWRkcmVz
cyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fbnVtQ2Fj
aGVhYmxlU2xvdHMpKSkpOworICAgIGFkZDMyKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRP
RihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX29mZnNldEJhc2UpKSwgcmVnVDMpOwogICAgIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMpOyAgICAKICAg
ICAKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEyMTYz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTMsOCArMTUzLDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKEluc3RydWMKIAogdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lz
dGVySUQgc2NyYXRjaCkKIHsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRl
eChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAwKSwgcmVzdWx0KTsKKyAgICBBU1NFUlQoc2l6
ZW9mKEpTVmFsdWUpID09IDgpOworICAgIAorICAgIEp1bXAgaXNJbmxpbmUgPSBicmFuY2gzMihM
ZXNzVGhhbiwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2gpOworICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICBpc0lubGluZS5s
aW5rKHRoaXMpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBsb2FkUHRy
KEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3RvcmFnZUNhcGFj
aXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zNzMsMTQg
KzM4MCwxNSBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlCiAgICAg
UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihw
YXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAgIGFkZFNsb3dDYXNlKHN0cnVjdHVy
ZUNoZWNrKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMCk7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9h
ZCA9IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERh
dGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRy
ZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCks
IHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVS
UlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0
eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZv
KFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJl
c3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3Bl
cnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zm
c2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHBy
b3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0
ICs0NDgsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAg
IERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJl
Z1QyKTsKKyAgICBMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNo
cG9pbnRzKCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50
TGFiZWwgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDEsIEFkZHJlc3MocmVn
VDIsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVE
X1NFUVVFTkNFKHNlcXVlbmNlUHV0QnlJZCk7CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1Qw
LCByZWdUMSwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJp
ZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25J
bmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJ
ZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIGRp
c3BsYWNlbWVudExhYmVsKSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5h
cHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1f
Ynl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC00NzEsMjggKzQ4MCw0MSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiAKIC8vIENvbXBpbGUgYSBzdG9y
ZSBpbnRvIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIHRoZQog
Ly8gdmFsdWUgaW4gb2JqZWN0UmVnLgotdm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQor
dm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHZhbHVlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNl
dCA9IGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBz
dG9yZVB0cih2YWx1ZSwgQWRkcmVzcyhiYXNlLCBvZmZzZXQpKTsKKyAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBzdG9yZVB0cih2YWx1ZSwgQWRkcmVzcyhi
YXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzaXplb2YoSlNWYWx1ZSkg
KiBvZmZzZXRJbklubGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBzdG9yZVB0cih2YWx1ZSwgQWRkcmVz
cyhiYXNlLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVk
T2Zmc2V0KSkpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3Bl
cnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2Fj
aGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewot
ICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXQpLCByZXN1bHQpOwor
ICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlc3VsdCwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkpLCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBj
YWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCog
YmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsK
LSAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHQpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVk
T2Zmc2V0KSkgeworICAgICAgICBsb2FkUHRyKGJhc2UtPmxvY2F0aW9uRm9yT2Zmc2V0KGNhY2hl
ZE9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9h
ZFB0cihiYXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNl
dCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgSnVtcExpc3QgZmFpbHVyZUNhc2VzOwog
ICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KQEAg
LTUyMiw3ICs1NDQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlv
CiAjZW5kaWYKICAgICAKICAgICAvLyBlbWl0IGEgY2FsbCBvbmx5IGlmIHN0b3JhZ2UgcmVhbGxv
YyBpcyBuZWVkZWQKLSAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOworICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCk7CiAgICAgaWYgKHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8g
VGhpcyB0cmFtcG9saW5lIHdhcyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2Ug
Y2FuIGNhbiBjYWxsIGFnYWluIHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1
cm4gYWRkcmVzcyBmcm9tIHRoZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNv
bWluZyBtaXNhbGlnbmVkLgpAQCAtNTMyLDcgKzU1NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8v
IGJhc2UKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAg
IHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChy
ZWdUMCk7CiAgICAgICAgIGVtaXRHZXRKSVRTdHViQXJnKDIsIHJlZ1QxKTsKQEAgLTU3Miw3ICs1
OTQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJ
VDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNl
bGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZl
cihjb2RlQmxvY2spOwogCkBAIC01ODAsMTQgKzYwMiwxMyBAQCB2b2lkIEpJVDo6cGF0Y2hHZXRC
eUlkU2VsZihDb2RlQmxvY2sqIGNvCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9v
cF9nZXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGlu
ZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJl
dHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7CiAK
LSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAg
Ly8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwg
dGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUp
OwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxh
Y2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0
aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVP
ZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxh
Y2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFj
ZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIg
cmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01OTksNyArNjIwLDggQEAgdm9pZCBKSVQ6
OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNl
dCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3Ry
dWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+
aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsK
KyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQu
cHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOwor
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExh
YmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQog
CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3ICs2NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJU
b0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJy
YXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYg
dGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJl
IHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdz
IHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3
ICs3MzIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVn
VDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAs
NyArNzkyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3Rv
dHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENv
ZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJl
bmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQn
cyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04MzksNyArODYxLDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90
b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1w
TGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcgKzkzNiw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0ODYsNyArMTQ4Niw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHV0X2IKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0
YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgaW50MzJfdCBvbGRTaXplID0gc3RhY2tG
cmFtZS5hcmdzWzNdLmludDMyKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBzdGFj
a0ZyYW1lLmFyZ3NbNF0uc3RydWN0dXJlKCk7Ci0gICAgaW50MzJfdCBuZXdTaXplID0gbmV3U3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGludDMyX3QgbmV3U2l6ZSA9
IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKIAogICAgIEFTU0VSVChiYXNlVmFs
dWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNb
NV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJ
bklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk1
Miw3ICs5NTgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAg
ICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwog
ICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpOwpAQCAtOTYwLDE2ICs5NjksMjggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0
cnVjdHVyZUNoYWluLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRf
b2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAg
ICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpOworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEyLDggKzE1
MzMsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3BuYW1lCiAgICAgCiAg
ICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIExM
SU5UX09QKDIpID0gSlNWYWx1ZShvKTsKLSAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRo
SW50KDApOwotICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5h
bWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50
KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpcnN0T2Zmc2V0KCkpOworICAgIExMSU5UX09QKDQp
ID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+b2Zmc2V0RW5kKCkp
OwogICAgIAogICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CiAgICAgTExJ
TlRfRU5EKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTkxOSw2ICs5MTksMTcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAg
ICBkaXNwYXRjaCgzKQogCiAKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJv
cGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHRhZywgcGF5bG9hZCkKKyAgICBiaWx0IHBy
b3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFu
ZFN0b3JhZ2UKKyAgICBqbXAgLnJlYWR5CisuaXNJbmxpbmU6CisgICAgYWRkcCBKU0ZpbmFsT2Jq
ZWN0OjptX2lubGluZVN0b3JhZ2UgKyBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RB
bmRTdG9yYWdlCisucmVhZHk6CisgICAgbG9hZGkgVGFnT2Zmc2V0IC0gOCAqIElubGluZVN0b3Jh
Z2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHRhZworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFu
ZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZAorZW5kCisKIG1hY3JvIHJlc29s
dmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAg
ICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC05MzAsOSArOTQxLDcgQEAg
bWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKICAgICBsb2FkaSAxNltQ
Q10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyLCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpAQCAt
MTA4NywzMSArMTA5Niw0NCBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAg
ZGlzcGF0Y2goNSkKIAogCi1fbGxpbnRfb3BfZ2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9t
b3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRo
ZQorIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5n
ZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVz
dCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtl
IGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwg
d2hpY2ggaXMgd2hhdAorIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNy
byBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
IyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3
ZSBkbyBub3QgbW9kaWZ5IHRoZQotICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cg
Zm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBp
bmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9p
ZCB3aWxsIGNvbnRpbnVlCi0gICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hl
LiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291
bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2Fk
aSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0g
ICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0
MCwgdDJdLCB0MgotICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQot
ICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJv
cGVydHlTdG9yYWdlKAorICAgICAgICB0MywKKyAgICAgICAgdDAsCisgICAgICAgIG1hY3JvIChw
cm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICAgICAgICAgIGxvYWRpIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2Ny
YXRjaAorICAgICAgICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQy
XSwgdDIKKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAg
ICAgICAgbG9hZGkgMzJbUENdLCB0MQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gs
IHQyLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIAorICAgICAgICAub3BH
ZXRCeUlkU2xvdzoKKyAgICAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dl
dF9ieV9pZCkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAogCi0u
b3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
aWQpCi0gICAgZGlzcGF0Y2goOSkKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3
aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgor
ICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1
bWVudHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1Miw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgor
bWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAg
IGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJ
ZFNsb3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwg
VGFnT2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQot
ICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAg
ICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
CisgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIo
c2NyYXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJv
cGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkK
K2VuZAogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAorX2xsaW50X29wX3B1dF9ieV9pZDoKKyAg
ICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfb3V0
X29mX2xpbmU6CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKKwogCi1tYWNybyBw
dXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorbWFjcm8gcHV0QnlJZFRyYW5zaXRp
b24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xv
dykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQ
dXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQ
Q10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAg
ICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIp
Ci0gICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10K
LSAgICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQot
ICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQor
ICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAg
ICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwg
cHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAg
ICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwg
dDEKKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAg
IHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNo
KDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3Ry
dWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0
cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAj
IFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBs
b2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNo
LCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBz
Y3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAg
IGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBO
dWxsVGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1
Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAg
ICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IE51bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUs
IHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxD
aGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlv
bmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNy
byAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9D
ZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIg
Zm9yIHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRj
aAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQot
ICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3Jh
dGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQp
Ci0gICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xk
U3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBs
b2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVd
LCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9D
ZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3Jh
dGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5l
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxU
YWcsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5z
aXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJ
ZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQog
CiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzExLDggQEAgX2xsaW50X29w
X2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0
MAogICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNs
b3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0
eVN0b3JhZ2VbdDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC03NzgsNiArNzc4LDE2IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlz
cGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5
T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB2YWx1ZSkKKyAgICBiaWx0IHByb3BlcnR5T2Zmc2V0
LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAg
ICBqbXAgLnJlYWR5CisuaXNJbmxpbmU6CisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGlu
ZVN0b3JhZ2UgKyBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RBbmRTdG9yYWdlCisu
cmVhZHk6CisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKIG1hY3JvIHJlc29sdmVHbG9i
YWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgOFtQ
QiwgUEMsIDhdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtNzg5LDggKzc5OSw3IEBA
IG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMjRbUEIsIFBDLCA4XSwgc2xvdwogICAgIGxv
YWRpcyAzMltQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0MF0sIHQwCi0gICAgbG9hZHAgW3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQw
CiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwgOF0KICAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQ
QiwgUEMsIDhdLCB0MApAQCAtOTM3LDcgKzk0Niw3IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CittYWNy
byBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
IyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3
ZSBkbyBub3QgbW9kaWZ5IHRoZQogICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cg
Zm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKQEAgLTk0OCwx
OCArOTU3LDMwIEBAIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4
XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRT
bG93KQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCi0gICAg
bG9hZHAgW3QwLCB0Ml0sIHQzCi0gICAgc3RvcmVwIHQzLCBbY2ZyLCB0MSwgOF0KLSAgICBsb2Fk
cCA2NFtQQiwgUEMsIDhdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDEpCi0gICAgZGlzcGF0
Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwK
KyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAg
ICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICBsb2FkcCBbcHJvcGVydHlT
dG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbY2ZyLCB0
MSwgOF0KKyAgICAgICAgICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICB2
YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDEpCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAg
ICAKKyAgICAgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAgICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAg
ICBlbmQpCitlbmQKIAotLm9wR2V0QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCitfbGxpbnRfb3BfZ2V0X2J5X2lk
OgorICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9s
bGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2NSArOTk5LDkzIEBAIF9sbGlu
dF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9v
cF9wdXRfYnlfaWQ6CittYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQ
QiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDQwW1BCLCBQQywgOF0s
IHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgd3JpdGVCYXJyaWVy
KHQwKQotICAgIHN0b3JlcCB0MCwgW3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFBy
b3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAo
cHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDQwW1BC
LCBQQywgOF0sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCBzY3Jh
dGNoKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQwKQorICAgICAgICAgICAgc3RvcmVwIHNj
cmF0Y2gsIFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAg
ICAgICAgZW5kKQorZW5kCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3BfcHV0
X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1
dF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQog
Ci1tYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorCittYWNybyBwdXRC
eUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAg
MzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAs
IC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgogICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlv
bmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0
MSwgdDMpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxKQotICAgIHdyaXRlQmFycmllcih0MSkKLSAgICBzdG9yZXAg
dDEsIFt0M10KLSAgICBsb2FkcCA0OFtQQiwgUEMsIDhdLCB0MQotICAgIHN0b3JlcCB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3Rv
cmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlT
dG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0
MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCisgICAgICAgICAg
ICB3cml0ZUJhcnJpZXIodDEpCisgICAgICAgICAgICBzdG9yZXAgdDEsIFt0M10KKyAgICAgICAg
ICAgIGxvYWRwIDQ4W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQp
CitlbmQKKworbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkK
K2VuZAorCittYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gp
CisgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xk
U3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICBsb2FkcCA1NltQQiwgUEMsIDhd
LCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQor
ICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAg
IGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBicGVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQorLmxvb3A6
CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0Nl
bGwKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVy
ZQorICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAg
IGFkZHAgOCwgc2NyYXRjaAorICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3Ry
dWN0dXJlXSwgVmFsdWVOdWxsLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9B
ZGRpdGlvbmFsQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KG5vQWRkaXRpb25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAg
ICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNv
bnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVy
ZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCi0gICAgICAgICAgICBsb2FkcCA1NltQQiwgUEMsIDhd
LCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCi0gICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRj
aF0sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKLSAgICAgICAgICAgIGJwZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1
Y3R1cmVdLCBWYWx1ZU51bGwsIC5kb25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAgbG9h
ZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAg
ICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJl
Ci0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAg
ICAgICAgYWRkcCA4LCBzY3JhdGNoCi0gICAgICAgICAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0g
ICAgICAgIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywg
d2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNo
ZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBA
IC0xMTA2LDggKzExNTUsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCiAgICAgc3ViaSAxLCB0MwogICAgIGJpYWVxIHQz
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QxXSwgLm9wR2V0
QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0
MAotICAgIGxvYWRwIFt0MCwgdDMsIDhdLCB0MAorICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6bV9vZmZzZXRCYXNlW3QxXSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQzLCB0MCwgdDApCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBzdG9yZXAg
dDAsIFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
MjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJu
UEMgPSBBcmd1bWVudENvdW50ICsgVGEKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdz
OEJpdEJ1ZmZlciA9IDY0CiAKKyMgUHJvcGVydHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFM
VUU2NAorICAgIGNvbnN0IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25z
dCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA2CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50
cwogaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0g
MQpAQCAtMzEyLDggKzMxOSw3IEBAIG1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xh
c3NJbmQKICAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQogICAgICAgICBzdG9yZXAg
c3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIDAs
IEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KLSAgICAgICAgYWRkcCBzaXplb2YgSlNP
YmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6
Om1fb3V0T2ZMaW5lU3RvcmFnZVtyZXN1bHRdCiAgICAgZW5kCiBlbmQKIApAQCAtNDgxLDYgKzQ4
NywyMSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CiAgICAgZGlzcGF0Y2goNSkKIAog
CittYWNybyB3aXRoSW5saW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGlu
dWF0aW9uKQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9wZXJ0eSBz
dG9yYWdlLCBhbmQgdGhhdCB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0ZXIgaXMg
dW51c2VkLgorICAgIGNvbnRpbnVhdGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkKK2VuZAor
CittYWNybyB3aXRoT3V0T2ZMaW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29u
dGludWF0aW9uKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0
XSwgcHJvcGVydHlTdG9yYWdlCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBwcm9wZXJ0eVN0b3Jh
Z2UgcmVnaXN0ZXIgbm93IHBvaW50cyB0byB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UsIGFu
ZCB0aGF0IHRoZSBvYmplY3QgcmVnaXN0ZXIgbWF5IGJlIHJldXNlZAorICAgICMgaWYgdGhlIG9i
amVjdCBwb2ludGVyIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KKyAgICBjb250aW51YXRpb24ocHJv
cGVydHlTdG9yYWdlLCBvYmplY3QpCitlbmQKKworCiBfbGxpbnRfb3BfZGVsX2J5X2lkOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWxf
YnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTU1NSw3ICs1NTUsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAg
ICBlbmQKICAgICAKICAgICBkZWYgaGFuZGxlWDg2QWRkKGtpbmQpCi0gICAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGlm
IG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAg
ICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICAgICAgZW5kCisgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJd
LmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAK
QEAgLTU2OCw3ICs1NzIsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgZWxzaWYgb3Bl
cmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKLSAgICAgICAgICAg
ICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0g
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImxl
YSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICAgICAgICBlbmQKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdW5sZXNz
IEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQogICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7eDg2T3BlcmFuZHMoa2luZCwga2luZCl9
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlOwotICAgICAgICBzaXplX3QgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CkBAIC0yNjIsNyAr
MjYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
ICAgIFN0cnVjdHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym91bmRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG5hbWVk
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KLSAgICAgICAgc2l6ZV90IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZ1
bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9
CiAgICAgICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBw
cml2YXRlTmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDI0ICs5Myw1NCBAQCB2b2lkIEpTT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlv
bGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAg
ICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAj
ZW5kaWYKKyAgICAKKyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGlu
ZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNp
emUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmlu
YWxPYmplY3QoKTsKKyAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBz
bGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2Ug
dHlwZS1wdW5uZWQgcG9pbnRlcnMuCisgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOworICAg
ICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
LCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRp
Y19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0
T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7Cisg
ICAgfQorCisgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAorI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0g
d2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyNlbmRpZgorfQorCit2b2lkIEpT
RmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU0ZpbmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxP
YmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIHdhc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uOworICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRp
b24gPSBmYWxzZTsKKyNlbmRpZgorICAgIAogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09i
amVjdC0+cHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBpZiAodGhpc09i
amVjdC0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1
ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwotICAgIGVsc2UgeworICAgIFByb3BlcnR5U3RvcmFn
ZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9y
YWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOwogICAgICAgICAvLyBXZSBo
YXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJs
b29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAg
ICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgm
dGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3Rv
cmFnZVNpemUpOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKICAgICAgICAg
c3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0gICAgICAgIHRo
aXNPYmplY3QtPm1fcHJvcGVydHlTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6
VW5jaGVja2VkKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChz
dG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAgICBpZiAodGhp
c09iamVjdC0+bV9pbmhlcml0b3JJRCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faW5oZXJpdG9ySUQpOwogCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVj
dC0+c3RydWN0dXJlKCktPmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXMoaW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7CisKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAjZW5kaWYKQEAg
LTE1Myw4ICsxODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
CiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChw
cm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFk
T25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTUxOSwxNyArNTQ5LDE3IEBA
IGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEKICAgICBpZiAoc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zm
c2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0
U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlm
IChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZz
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1ICs1ODksMjIgQEAgU3RydWN0
dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAgIHJldHVybiBtX2luaGVyaXRv
cklELmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dQcm9wZXJ0eVN0
b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5l
d1NpemUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQog
ewogICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICAvLyBJdCdzIGltcG9ydGFu
dCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIHNpbmNlCiAgICAg
Ly8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zaXRpb24uCiAKLSAgICBQcm9w
ZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7
CisgICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fb3V0T2ZMaW5lU3Rv
cmFnZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gMDsK
IAotICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgaWYgKCFvbGRQcm9wZXJ0
eVN0b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBz
bGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2Ug
dHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBuZXdQcm9wZXJ0eVN0
b3JhZ2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShz
aXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdTaXplLCAmdGVtcCkpCiAgICAg
ICAgICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBv
bGRQcm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0
aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBv
ZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZv
aWQqIHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQsOCArNjIxLDggQEAgYm9vbCBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgaWYgKG9m
ZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3Jp
cHRvci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJp
YnV0ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNCArNzksNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVy
dHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgfTsKIAotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0j
ZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDYKLSNlbHNlCi0jZGVm
aW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKLSNlbmRpZgotCi1DT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gMCksIGZp
bmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsKLQogICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTE2OSwyNiArMTYxLDcyIEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgLy8gVGhpcyBnZXQg
ZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgICAgICBKU1ZhbHVl
IGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpT
VmFsdWUoKTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0
KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDog
SlNWYWx1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAg
cmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChv
ZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDog
MDsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERp
cmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpT
Q2VsbCogc3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNGdW5jdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQg
PyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAg
ICB9CiAKLSAgICAgICAgc2l6ZV90IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2Uo
KSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzSW5saW5lU3RvcmFnZSgpOyB9CisgICAg
ICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2VVbnNhZmUoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvbnN0UHJvcGVydHlTdG9y
YWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGlu
ZVN0b3JhZ2VVbnNhZmUoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24g
LSBwcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJv
cGVydHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0
eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3Jh
Z2VVbnNhZmUoKTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNJbmxpbmVTdG9yYWdlKCkp
OworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQorICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFn
ZS5nZXQoKTsgfQorCisgICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxv
Y2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOwor
ICAgICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKG9mZnNldCldOworICAgICAgICB9CisKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0
KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVzdWx0OworICAg
ICAgICAgICAgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZSA9IGxvY2F0aW9uIC0gaW5saW5l
U3RvcmFnZVVuc2FmZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldEluSW5saW5lU3RvcmFnZSA8
IHN0YXRpY19jYXN0PHNpemVfdD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRpb24gLSBvdXRPZkxpbmVTdG9yYWdlKCk7Cisg
ICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChyZXN1bHQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
LnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CkBAIC0yMDUs
OSArMjQzLDkgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgICAgIC8vIEZhc3QgYWNjZXNzIHRv
IGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0
KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0u
Z2V0KCk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQotICAgICAgICB2b2lkIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQorICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uRm9yT2Zm
c2V0KG9mZnNldCktPmdldCgpOyB9CisgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVl
KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1
ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7
IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKQEAgLTIyOCwyNCArMjY2LDE2IEBAIENPTVBJTEVf
QVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBzdGF0aWNGdW5j
dGlvbnNSZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKTsgfQogICAgICAgICB2b2lkIHJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNT
dGF0ZSogZXhlYyk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlTdG9yYWdl
IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0KLSAgICAgICAgICAgICAgICAhbV9w
cm9wZXJ0eVN0b3JhZ2UuZ2V0KCkKLSAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPih0aGlzICsgMSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IHN0cnVjdHVyZSgp
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwg
UHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UHJvcGVydHlTdG9yYWdlIGdyb3dPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVf
dCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIHZvaWQgc2V0T3V0T2ZMaW5lU3Rv
cmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2UsIFN0cnVjdHVyZSopOwogICAgICAg
ICAKICAgICAgICAgYm9vbCByZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0
YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIHVu
c2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1
cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSopOwogCi0gICAgICAgIHZvaWQqIGFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpCisgICAgICAg
IHZvaWQqIGFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gJm1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICAgICAgcmV0dXJuICZtX291dE9m
TGluZVN0b3JhZ2U7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTI2MSw3ICsyOTEsNyBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7Ci0gICAgICAg
IHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKTsKICAgICAgICAgc3RhdGljIHNpemVf
dCBvZmZzZXRPZkluaGVyaXRvcklEKCk7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTI3MSw3ICszMDEsNyBAQCBDT01QSUxFX0FTU0VS
VCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGlu
ZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNFbXB0eSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRo
aXMpID09IEhlYXA6OmhlYXAocHJvdG90eXBlKCkpKTsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNPYmplY3QoKSk7CkBAIC0yODcsNyArMzE3LDcgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgICAgIC8vIFRvIGluc3RhbnRpYXRlIG9i
amVjdHMgeW91IGxpa2VseSB3YW50IEpTRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICAvLyBU
byBjcmVhdGUgZGVyaXZlZCB0eXBlcyB5b3UgbGlrZWx5IHdhbnQgSlNOb25GaW5hbE9iamVjdCwg
YmVsb3cuCi0gICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICB2b2lkIHJlc2V0SW5oZXJpdG9ySUQo
KQogICAgICAgICB7CkBAIC0zMDUsMTkgKzMzNSw2IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgdm9pZCBpc09iamVjdCgpOwogICAgICAgICB2b2lk
IGlzU3RyaW5nKCk7CiAgICAgICAgIAotICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBwcm9w
ZXJ0eVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQot
ICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgeyByZXR1cm4gbV9wcm9w
ZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLQotICAgICAgICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gJnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF07Ci0gICAgICAg
IH0KLQotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNl
dChzaXplX3Qgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJnByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF07Ci0gICAgICAgIH0KLQogICAgICAgICB0ZW1wbGF0ZTxQdXRNb2Rl
PgogICAgICAgICBib29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90JiwgSlNDZWxsKik7
CiAKQEAgLTMyNyw3ICszNDQsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxp
bmVTdG9yCiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZSogY3JlYXRl
SW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJik7CiAKLSAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9w
cm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fb3V0T2ZMaW5lU3RvcmFn
ZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbmhlcml0b3JJRDsKICAgICB9
OwogCkBAIC0zNTMsMTQgKzM3MCwxNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yCiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCAwKQorICAgICAgICAg
ICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRh
KTsKLSAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90
YWxTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkpOwog
ICAgICAgICB9CiAgICAgfTsKQEAgLTM4MSw2ICszOTgsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEZpbmFsT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgICAgIHN0YXRpYyBib29sIGhhc0lubGluZVN0b3JhZ2UoKQpAQCAt
Mzg4LDExICs0MDcsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rv
cgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbkNvbW1vbihTbG90VmlzaXRvciYpOworICAgICAgICAK
ICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwog
ICAgICAgICAgICAgQVNTRVJUKCEoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5s
aW5lU3RvcmFnZSkgJSBzaXplb2YoZG91YmxlKSkpOwotICAgICAgICAgICAgQVNTRVJUKHRoaXMt
PnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTRmluYWxPYmplY3Rf
aW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1
cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAg
ICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID09
IGlubGluZVN0b3JhZ2VDYXBhY2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKCkp
OwogICAgICAgICB9CiAKQEAgLTQwMCwxMyArNDIyLDEzIEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDog
SlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCisgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAg
ICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4gbV9pbmxpbmVTdG9yYWdlW0pTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5XTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGluZVN0b3JhZ2VbSU5MSU5F
X1NUT1JBR0VfQ0FQQUNJVFldOwogICAgIH07CiAKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0Zp
bmFsT2JqZWN0OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
QEAgLTQzMSw5ICs0NTMsOSBAQCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0CiAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0
b3JhZ2UpOwogfQogCi1pbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpCitpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KQogewotICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fcHJvcGVydHlTdG9y
YWdlKTsKKyAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX291dE9mTGluZVN0
b3JhZ2UpOwogfQogCiBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklE
KCkKQEAgLTQ3MSwxNCArNDkzLDE4IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojppc0dsb2JhbFRo
aXMoKSBjb24KICAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEds
b2JhbFRoaXNUeXBlOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJvcGVydHlTdG9y
YWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldE91dE9mTGluZVN0
b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKHN0b3JhZ2UpOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUpOwotICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFn
ZSgpCi0gICAgICAgICAgIHx8IChjbGFzc0luZm8oKSA9PSAmSlNGaW5hbE9iamVjdDo6c19pbmZv
ICYmIHN0YXRpY19jYXN0PHZvaWQqPihzdG9yYWdlKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4odGhp
cyArIDEpKSk7CisgICAgaWYgKCFzdG9yYWdlKSB7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm91dE9m
TGluZVNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZVNp
emUoKSk7CisgICAgfQogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwot
ICAgIG1fcHJvcGVydHlTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKKyAg
ICBtX291dE9mTGluZVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0b3JhZ2UpOwogfQog
CiBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC01MTYsOSArNTQyLDkgQEAgaW5saW5lIEpTT2JqZWN0
KiBhc09iamVjdChKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBhc09iamVjdCh2YWx1ZS5hc0Nl
bGwoKSk7CiB9CiAKLWlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UpCitpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgaW5saW5lU3RvcmFn
ZSkKKyAgICAsIG1fb3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCAwKQogewogfQog
CkBAIC01NDIsMTkgKzU2OCw2IEBAIGlubGluZSBTdHJ1Y3R1cmUqIEpTT2JqZWN0Ojppbmhlcml0
b3JJRCgKICAgICByZXR1cm4gY3JlYXRlSW5oZXJpdG9ySUQoZ2xvYmFsRGF0YSk7CiB9CiAKLWlu
bGluZSBzaXplX3QgU3RydWN0dXJlOjppbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdAotewot
ICAgIGlmIChjbGFzc0luZm8oKSA9PSAmSlNGaW5hbE9iamVjdDo6c19pbmZvKQotICAgICAgICBy
ZXR1cm4gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLWlubGluZSBib29sIFN0cnVjdHVyZTo6aXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dAotewotICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IGlubGluZVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKLSAgICByZXR1cm4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsKLX0KLQogaW5saW5lIGJvb2wgSlNDZWxsOjppbmhlcml0
cyhjb25zdCBDbGFzc0luZm8qIGluZm8pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNsYXNzSW5mbygp
LT5pc1N1YkNsYXNzT2YoaW5mbyk7CkBAIC02MTEsMTAgKzYyNCwxMCBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNDZWxs
OjpmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBuYW1l
KQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkp
IHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2goKQogICAgICAg
ICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCBuYW1lKSkKICAgICAgICAgICAgIDogc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxE
YXRhKCksIG5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCisgICAg
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBhc09i
amVjdCh0aGlzKS0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Z2V0KCk7CiAgICAgfQogICAg
IHJldHVybiBKU1ZhbHVlKCk7CkBAIC02NzYsOCArNjg5LDggQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpIHsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2Vs
bCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMs
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5v
dEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsK
ICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGN1cnJlbnRseSBhIHNwZWNpZmljIGZ1bmN0aW9u
LCBhbmQgdGhlcmUgbm93IGVpdGhlciBpc24ndCwKICAgICAgICAgICAgIC8vIG9yIHRoZSBuZXcg
dmFsdWUgaXMgZGlmZmVyZW50LCB0aGVuIGRlc3BlY2lmeS4KICAgICAgICAgICAgIGlmIChjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbiAmJiAoc3BlY2lmaWNGdW5jdGlvbiAhPSBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbikpCkBAIC03MDAsMTMgKzcxMywxNCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAh
aXNFeHRlbnNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICAgICAgaWYg
KHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICAgICAg
bmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCkt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdQcm9w
ZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9
IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jv
d091dE9mTGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZM
aW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAg
ICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsK
LSAgICAgICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVj
dHVyZSgpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBzdHJ1Y3R1cmUoKSk7CiAKLSAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZSgp
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0YXRpY19jYXN0PFByb3BlcnR5T2Zmc2V0
PihzdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSkpOwogICAgICAgICBwdXREaXJl
Y3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21t
ZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNG
dW5jdGlvbikKQEAgLTcxNCwxNSArNzI4LDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbCgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZV90
IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHNp
emVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsK
ICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewotICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOyAKLSAgICAgICAgaWYg
KGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
Ci0gICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
Ci0KLSAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBzdHJ1Y3R1cmUpOworICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91
dE9mTGluZVN0b3JhZ2UoKTsgCisgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dP
dXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKKworICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwor
ICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RhdGljX2Nhc3Q8UHJvcGVydHlPZmZzZXQ+KHN0cnVj
dHVyZS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9y
YWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB1dERpcmVj
dE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBh
IG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBj
dXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVu
Y2FjaGFibGUgc3RhdGUuCkBAIC03MzQsNyArNzQ5LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAg
IEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7
CisgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgIGlmICgobW9kZSA9
PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NjgsNyArNzgzLDggQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlzLT5zdHJ1Y3R1cmUo
KSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwog
ICAgIAotICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA8
IHN0YXRpY19jYXN0PFByb3BlcnR5T2Zmc2V0PihzdHJ1Y3R1cmUtPnRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkpKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC03ODEsMjIgKzc5NywyMiBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1
Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewot
ICAgIEFTU0VSVChvbGRDYXBhY2l0eSA8PSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOworICAgIEFTU0VSVChvbGRDYXBhY2l0eSA8PSBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOwogICAgIAotICAgIGlmIChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICBpZiAob2xkQ2FwYWNpdHkgPT0g
bmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgIHNldFN0cnVjdHVy
ZShnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZSgK
LSAgICAgICAgZ2xvYmFsRGF0YSwgb2xkQ2FwYWNpdHksIG5ld1N0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5l
d1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2Ug
PSBncm93T3V0T2ZMaW5lU3RvcmFnZSgKKyAgICAgICAgZ2xvYmFsRGF0YSwgb2xkQ2FwYWNpdHks
IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgc2V0T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2Fy
eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewog
ICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoCi0gICAgICAg
IGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBuZXdT
dHJ1Y3R1cmUpOworICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93
bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTgyNCwx
MSArODQwLDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWwKIGlu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRl
cigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5l
d1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdp
bGxHcm93UHJvcGVydHlTdG9yYWdlKCkpCi0gICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRDYWxsYWJsZU9iamVj
dCh2YWx1ZSkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdl
LCBzdHJ1Y3R1cmUoKSk7CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxp
bmVTdG9yYWdlKCk7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3Vn
Z2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUp
KTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVj
dHVyZSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7
CiB9CiAKQEAgLTkwNiw4ICs5MjIsNiBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4
KEV4ZWNTdGF0CiAgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoYXNDZWxs
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotLy8gLS0t
IEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIEFMV0FZU19J
TkxJTkUgSlNPYmplY3QqIFJlZ2lzdGVyOjpmdW5jdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFq
c1ZhbHVlKCkpCkBAIC05MjIsNiArOTM2LDMyIEBAIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXIgUmVn
aXN0ZXI6OndpdGhDYWwKICAgICByZXR1cm4gcjsKIH0KIAorLy8gVGhpcyBpcyBhIGhlbHBlciBm
b3IgcGF0Y2hpbmcgY29kZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0IGEgbG9hZCBvciBzdG9yZSBh
bmQKKy8vIHRoZSBiYXNlIGlzOgorLy8gRm9yIGlubGluZSBvZmZzZXRzOiBhIHBvaW50ZXIgdG8g
dGhlIG91dC1vZi1saW5lIHN0b3JhZ2UgcG9pbnRlci4KKy8vIEZvciBvdXQtb2YtbGluZSBvZmZz
ZXRzOiB0aGUgYmFzZSBvZiB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KK2lubGluZSBzaXplX3Qg
b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC0gSlNPYmplY3Q6Om9m
ZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9mZnNl
dEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgaW50IGluZGV4UmVsYXRpdmVU
b0Jhc2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc091dE9mTGluZU9mZnNl
dChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNl
dCk7CisgICAgQVNTRVJUKCEoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICUgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworICAgIHJldHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlKG9mZnNldCk7Cit9CisKK2lubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKQor
ICAgICAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpOworICAgIHJldHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9y
YWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmplY3RfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NiwxMCArNTYsMTAgQEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5h
bWVJdAogICAgIHNpemVfdCBudW1DYWNoZWFibGVTbG90cyA9IDA7CiAgICAgaWYgKCFvLT5zdHJ1
Y3R1cmUoKS0+aGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSAmJiAhby0+c3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKQogICAgICAgICAmJiAhby0+c3RydWN0dXJlKCkt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgJiYgIW8tPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMg
PSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICBudW1DYWNo
ZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VTaXplKCk7CiAgICAgCiAg
ICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFw
KCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBu
dW1DYWNoZWFibGVTbG90cyk7Ci0gICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3Jl
YXRpb24oZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCkpOworICAgIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBvKTsKIAog
ICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHJldHVybiBq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTIxNjM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMiArNDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7Ci0gICAgICAgIHN0YXRp
YyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJs
ZVNsb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGl0
ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlO
YW1lQXJyYXlEYXRhLCBudW1DYWNoZWFibGVTbG90KTsKLSAgICAgICAgICAgIGl0ZXJhdG9yLT5m
aW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEpOwotICAgICAgICAgICAg
cmV0dXJuIGl0ZXJhdG9yOwotICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKICAgICAgICAKQEAgLTYzLDExICs1NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKLSAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIGludCYgb2Zmc2V0KQorICAg
ICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKGkgPj0gbV9udW1DYWNoZWFibGVTbG90cykKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBvZmZzZXQgPSBpOworICAgICAg
ICAgICAgb2Zmc2V0ID0gaSArIG1fb2Zmc2V0QmFzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAKQEAgLTg4LDEyICs4MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSkKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJy
YXlEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHBy
b3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQogICAgICAgICAgICAg
ICAgIG1fanNTdHJpbmdzW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpzT3duZWRT
dHJpbmcoZXhlYywgcHJvcGVydHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOworICAgICAgICAg
ICAgbV9vZmZzZXRCYXNlID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Zmlyc3RWYWxpZE9mZnNldCgp
OwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpAQCAtMTA1LDYgKzEwMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJv
dG90eXBlQ2hhaW47CiAgICAgICAgIHVpbnQzMl90IG1fbnVtQ2FjaGVhYmxlU2xvdHM7CiAgICAg
ICAgIHVpbnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9v
ZmZzZXRCYXNlOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBt
X2pzU3RyaW5nczsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsxMzAsOCBAQCB2
b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgZm9yICg7IDsgb2Jq
ID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwog
ICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBv
YmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAg
ICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxNjM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU51bWJlck9m
R0NNYXJrZXJzCiAKIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogewotICAgIFNFVCh1c2VKSVQs
IHRydWUpOworICAgIFNFVCh1c2VKSVQsIGZhbHNlKTsKICAgICAKICAgICBTRVQoc2hvd0Rpc2Fz
c2VtYmx5LCBmYWxzZSk7CiAgICAgU0VUKHNob3dERkdEaXNhc3NlbWJseSwgZmFsc2UpOyAvLyBE
RkcgZGlzYXNzZW1ibHkgaXMgc2hvd24gaWYgc2hvd0Rpc2Fzc2VtYmx5IHx8IHNob3dERkdEaXNh
c3NlbWJseQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBI
YXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZpbmUg
UHJvcGVydHlNYXBIYXNoVGFibGVfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNp
bmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hUYWJsZS5oPgpAQCAtNzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBuZXh0
UG93ZXJPZjIodW5zaWduZWQgdikKIAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIFN0
cmluZ0ltcGwqIGtleTsKLSAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTQ2Vs
bD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFByb3Bl
cnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJp
bmdJbXBsKiBrZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwgb2Zm
c2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQsOCAr
MTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1bnVz
ZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVsZXRl
ZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBn
ZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9m
ZnNldCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZvaWQg
YWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworICAgIAorICAgIFByb3Bl
cnR5T2Zmc2V0IG5leHRPZmZzZXQoSlNUeXBlIHR5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFBy
b3BlcnR5VGFibGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkg
cHJvdmlkZWQuCiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0
YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMs
NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5
Q291bnQ7CiAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8
dW5zaWduZWQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4gPiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IE1pbmltdW1UYWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlF
bnRyeUluZGV4ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6
UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zm
c2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9
IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0
Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAg
ICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAg
ICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlBy
b3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlh
bENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBA
QCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAg
Ly8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVk
Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7Cisg
ICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAg
ICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIo
bmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAog
aW5saW5lIFByb3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMx
IEBAIGlubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4g
bV9kZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1p
bmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUg
UHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAg
dW5zaWduZWQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRP
ZmZzZXRzLT5yZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZv
aWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxp
bmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRl
ZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9k
ZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNl
dCBQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNE
ZWxldGVkT2Zmc2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAg
CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgp
OworICAgIAorICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwog
aW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5
KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1
MTMsNyBAQCBpbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAg
c2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAg
aWYgKG1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0
cy0+Y2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1f
ZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisj
aW5jbHVkZSAiSlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNlbHNlCisjZGVmaW5l
IElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgorCit0eXBlZGVmIGludCBQcm9wZXJ0
eU9mZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAt
MTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSBJ
TkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBmaXJz
dE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKworLy8gRGVjbGFyZSBh
bGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNhbGxz
LgoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGlu
ZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpOwor
aW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGlu
ZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUp
OworaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5s
aW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBi
b29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgc2l6
ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5l
IHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsK
K2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9y
TGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKTsKK2lubGluZSBQ
cm9wZXJ0eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBKU1R5cGUgdHlwZSk7CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNl
dEZvcihKU1R5cGUgdHlwZSk7CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zm
c2V0ID49IGludmFsaWRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIFVOVVNFRF9QQVJBTShvZmZz
ZXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IGludmFs
aWRPZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNldAorICAgICAgICAg
ICB8fCB0eXBlID09IEZpbmFsT2JqZWN0VHlwZQorICAgICAgICAgICB8fCBpc091dE9mTGluZU9m
ZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlz
VmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zm
c2V0LCB0eXBlKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKK30KKworaW5s
aW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hl
Y2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQ7Cit9
CisKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgPCBpbmxpbmVTdG9y
YWdlQ2FwYWNpdHk7Cit9CisKK2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiAh
aXNJbmxpbmVPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGlu
ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9m
ZnNldCk7CisgICAgQVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBv
ZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFT
U0VSVChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0IC0gZmly
c3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZl
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsK
KyAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lubGlu
ZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA8
IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gb2Zm
c2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQgKyAxOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJl
ck9mU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUp
Cit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBGaW5h
bE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyAxOworICAgIHJldHVybiBudW1i
ZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgUHJv
cGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
SlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAo
dHlwZSAhPSBGaW5hbE9iamVjdFR5cGUgJiYgb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCisgICAg
ICAgIHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICByZXR1cm4gb2Zmc2V0ICsgMTsK
K30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IoSlNUeXBl
IHR5cGUpCit7CisgICAgcmV0dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZvcihpbnZhbGlkT2Zmc2V0
LCB0eXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm9wZXJ0eU9m
ZnNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5j
bHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlBy
b3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtODksNyArOTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hlZFByb3BlcnR5
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9CiAgICAgICAgIGJv
b2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSAhPSBV
bmNhY2hlYWJsZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQotICAgICAgICBzaXplX3QgY2Fj
aGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIHNp
emVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwgSlNW
YWx1ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEpTQ19WQUxVRV9NQVJL
RVI7CkBAIC0xNjAsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2Rh
dGEuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNl
dENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRlckZ1
bmMsIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJGdW5jKTsKICAgICAg
ICAgICAgIG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwpAQCAtMjA2LDcgKzIw
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDbGVhciBv
ZmZzZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFByb3BlcnR5U2xvdCBo
YXMgYmVlbiB1c2VkIGJlZm9yZS4KICAgICAgICAgICAgIC8vIChGb3Igb3RoZXIgZGF0YSBtZW1i
ZXJzLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2UgcmV1c2Ugd291bGQg
bWVhbmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0gMDsK
KyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgIG1fY2Fj
aGVkUHJvcGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgIH0KIApAQCAtMjMyLDcgKzIz
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgICAg
IEpTVmFsdWUgbV90aGlzVmFsdWU7CiAKLSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIG1f
Y2FjaGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2Us
IHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVj
dCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBt
X3R5cGUgPSBFeGlzdGluZ1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKICAg
ICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBz
ZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9p
ZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAgICAgICAgICAg
IG1fYmFzZSA9IGJhc2U7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0K
ICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBVbmNh
Y2hhYmxlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKICAgICAgICAgICAgIEFTU0VS
VChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICAgICAg
fQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKLSAgICAgICAgc2l6ZV90
IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgYm9v
bCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw4
ICsxNTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAg
LCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNz
SW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxp
emVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZvLmlz
RmluYWxPYmplY3QoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDogMCkK
LSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgwKQor
ICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9u
ZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAg
ICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0xNzksOCArMTc5LDgg
QEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90
b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbygmc19p
bmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5n
KQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAgICwgbV9vZmZzZXQobm9P
ZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChpbnZh
bGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAg
ICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0
aGlzLCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2
aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRp
YWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHByZXZpb3Vz
LT5tX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisg
ICAgLCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291dE9mTGluZUNhcGFjaXR5KQor
ICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQocHJl
dmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShm
YWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2aW91cy0+bV9oYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RydWN0dXJl
OjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
Pm1fcHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9wcmV2
aW91cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9w
ZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CisgICAgICAgICAg
ICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9i
YWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3RydWN0
dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobV9vZmZzZXQgKyAxKTsKKyAgICAg
ICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQp
KTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0g
MDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEg
KzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAg
fQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXplX3Qg
Y3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFj
aXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkp
CiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwogfQog
Ci12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3Ry
dWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdl
Q2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1
Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJldHVy
biBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQog
IAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3
LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVudHJ5
LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQo
IXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4
aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAgICAg
ICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZpb3Vz
ICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJU
KGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2YWxp
ZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUo
KSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7CiAgICAg
ICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsK
IH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNw
ZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBp
cwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkg
bmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAgIG9m
ZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5zaXRpb24t
PnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRp
b24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0
T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogICAg
IApAQCAtMzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFs
dWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsK
LSAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUo
KSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5zaXRpb24t
Pmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwg
dHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6ZV90
JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJU
KCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTggKzU0
OCwxOSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAgICAg
ICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAgICAg
ICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAKICAg
ICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zmc2V0
ID0gZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIFBy
b3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAg
ICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1ZXNb
aV0gPSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAgICAg
Ly8gVXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZzZXRz
Ci0gICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zmc2V0
ID0gaSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDb3B5
IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlvbnMK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykKLSAg
ICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVlc1tp
XSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBmaXJz
dE9mZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVh
ckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAotc2l6
ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3OSwx
MyArNTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4KICAg
ICAKICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAg
aWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0g
ICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4gb3V0T2ZM
aW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgcmV0
dXJuIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NF
UlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90IFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJ
Zk5lY2Vzc2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAgICBzaXpl
X3Qgb2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAg
ICByZXR1cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpwaW4o
KQpAQCAtNjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1
cmU6OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBv
d25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3Bl
cnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3Bl
cnR5VGFibGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAgICByZXR1
cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0
YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVyT2ZT
bG90c0Zvckxhc3RPRmZzZXQobV9vZmZzZXQpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6Omdl
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1
ZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwog
CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAg
IGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAg
ICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRy
eSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAg
IGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1
cm4gaW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsK
ICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUs
OSArNjg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAg
ICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUp
CitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQo
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAtNjk4LDEyICs2OTgsNyBAQCBz
aXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAgICAgaWYgKCFtX3Byb3Bl
cnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKCk7CiAKLSAgICB1bnNpZ25lZCBu
ZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkp
Ci0gICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+Z2V0RGVsZXRlZE9mZnNldCgp
OwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7
CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5uZXh0T2Zm
c2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3Bl
cnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDcgKzcwNiw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6
OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1zaXpl
X3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5
T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC03MjQsNyArNzE5LDcgQEAgc2l6ZV90IFN0cnVj
dHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcgogICAgIGlmICghcG9zaXRpb24uZmlyc3QpCiAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwb3NpdGlvbi5m
aXJzdC0+b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0
LT5vZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92ZShwb3NpdGlvbik7CiAgICAg
bV9wcm9wZXJ0eVRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNldCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTIxNjM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCk7CisgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25U
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAg
LTEwMywzMiArMTAzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzRnJvemVu
KEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0
dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgICAgIGJvb2wgZGlkVHJhbnNpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQotICAgICAgICBib29sIHB1dFdpbGxH
cm93UHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGluZVN0
b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKG91
dE9mTGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IGN1cnJlbnRT
aXplKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gcHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IG51
bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsK
KyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlU
YWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5
VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX3By
b3BlcnR5VGFibGUtPnNpemUoKSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAg
ICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5z
aXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHRv
dGFsU3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKTsgCisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNp
dHkoKTsgCiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9u
LiAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZVByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAg
ICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0
aGlzLCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGljdGlvbmFyeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9
CkBAIC0xNDksMTggKzE0OSwxMDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIFN0
cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAgU3Ry
dWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVy
biBtX3ByZXZpb3VzLmdldCgpOworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5
VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAgICAg
dm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQgcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9Ci0g
ICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxl
ID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6ZV90IGlubGluZVN0b3JhZ2VD
YXBhY2l0eSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29u
c3Q7Ci0KLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwor
ICAgICAgICB2b2lkIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICB1bnNpZ25lZCBv
dXRPZkxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4g
bV9vdXRPZkxpbmVDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxp
bmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAg
ICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFs
U2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAg
ICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9
CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9
IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUo
KSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91
dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAg
dW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXpl
ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSB0aGlzLT5pbmxpbmVDYXBhY2l0eSgpOworICAg
ICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlu
bGluZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9m
T3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAg
ICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlOworICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAg
ICAgICAgdW5zaWduZWQgaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmpl
Y3RUeXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdDsKKyAgICAgICAgICAgIGlmICht
X3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxl
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgaWYgKHJlc3VsdCA+IGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNh
cGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFo
YXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAg
ICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKKyAg
ICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0g
JnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlubGlu
ZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdFZh
bGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
bGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJv
cGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBtX3By
b3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxpbmVT
dG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgLSAxOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgICAgICB9CisKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNp
ZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29s
IGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25z
dCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG87IH0KQEAgLTE3Nyw3ICsyNjgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
Ym9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9u
RW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0
eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAgICAgICAgICBy
ZXR1cm4gIWlzVmFsaWRPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlv
blRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudDsgfQpAQCAtMjczLDggKzM2OSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0
b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25h
cnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoUHJvcGVydHlOYW1lKTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHZvaWQgY3JlYXRlUHJv
cGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAgICAgdm9pZCBjaGVja0NvbnNp
c3RlbmN5KCk7CkBAIC0zMDEsNyArMzk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlu
dCB0cmFuc2l0aW9uQ291bnQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBTaW5j
ZSB0aGUgbnVtYmVyIG9mIHRyYW5zaXRpb25zIGlzIGFsd2F5cyB0aGUgc2FtZSBhcyBtX29mZnNl
dCwgd2Uga2VlcCB0aGUgc2l6ZSBvZiBTdHJ1Y3R1cmUgZG93biBieSBub3Qgc3RvcmluZyBib3Ro
LgotICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0
ICsgMTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1Zh
bGlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFpbikgY29u
c3Q7CkBAIC0zMTAsOCArNDA2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBzX21heFRyYW5zaXRpb25MZW5ndGggPSA2NDsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IG5vT2Zmc2V0ID0gLTE7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7CiAKICAgICAgICAgVHlwZUluZm8g
bV90eXBlSW5mbzsKQEAgLTMzNiwxMCArNDMwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgbXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0IG1fdHJhbnNpdGlvbldhdGNo
cG9pbnRTZXQ7CiAKLSAgICAgICAgdWludDMyX3QgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsK
KyAgICAgICAgdWludDMyX3QgbV9vdXRPZkxpbmVDYXBhY2l0eTsKIAogICAgICAgICAvLyBtX29m
ZnNldCBkb2VzIG5vdCBhY2NvdW50IGZvciBhbm9ueW1vdXMgc2xvdHMKLSAgICAgICAgaW50IG1f
b2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIAogICAgICAgICB1bnNp
Z25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKICAgICAgICAgYm9vbCBtX2lzUGlubmVkUHJvcGVy
dHlUYWJsZSA6IDE7CkBAIC0zNTMsMjYgKzQ0NywyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdW5zaWduZWQgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAgICAgfTsKIAotICAgIGlubGlu
ZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0
YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJv
cGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1l
LnVpZCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5v
dEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9m
ZnNldDsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBpbmxpbmUgUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBV
U3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0Owog
CiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5k
V2l0aFN0cmluZyhuYW1lLmltcGwoKSkuZmlyc3Q7Ci0gICAgICAgIHJldHVybiBlbnRyeSA/IGVu
dHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9m
ZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogICAgIAogICAgIGlubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150540</attachid>
            <date>2012-07-02 23:10:37 -0700</date>
            <delta_ts>2012-07-02 23:49:18 -0700</delta_ts>
            <desc>it compiles!</desc>
            <filename>overflowstorage_patch_10.diff</filename>
            <type>text/plain</type>
            <size>222525</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NiBA
QAorMjAxMi0wNy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhM
b2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhB
ZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6
CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6
cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRM
b2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAg
ICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29k
ZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3Bl
cnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAg
ICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5
VG9TdHViSW5mbyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm86OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNo
R2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlk
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAg
ICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20veDg2LnJiOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
cm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRE
aXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpoYXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0
b3JhZ2VVbnNhZmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9m
ZnNldEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
Tm9uRmluYWxPYmplY3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZp
bmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0ZpbmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRP
dXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjppbmRleFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFBy
b3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0
eU1hcEVudHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
Z2V0RGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJ
bmxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAg
IChKU0M6Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNl
dEZvcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6
OnNldFZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAg
ICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVy
dHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlT
bG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2Fj
aGVkT2Zmc2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAg
IChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25O
b25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppbmxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0Vt
cHR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTItMDctMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgT1NSIGV4aXQgdmFsdWUgcmVjb3ZlcmllcyBz
aG91bGQgYmUgY29tcHV0ZWQgbGF6aWx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2Miw2ICs1NjIsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwg
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBsYWJlbCgp
OworICAgIH0KICNlbmRpZgogICAgIAogICAgIExhYmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs2Nzcs
MTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJl
YWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKKyAg
ICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9j
YXRpb24oKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0
aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDI0IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0
aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZXBs
YWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
KyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNB
Y3RpdmUoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwsIGJvb2wgaXNBY3RpdmUpCisgICAgeworICAg
ICAgICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAgICByZXBsYWNlV2l0aExvYWQobGFiZWwpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihs
YWJlbCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiA1OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAg
ICAgICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRy
Kys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9W
X0d2RXY6CisgICAgICAgICAgICAqcHRyID0gT1BfTEVBOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJl
bCBjYWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRC
eUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdl
dF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVh
azsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
c2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzMyw2ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46
CkBAIC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfcmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwogICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAg
ICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBA
IC0yMDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAg
ICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgp
KQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBmYWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwg
U3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICAg
ICAgCiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAogICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAt
MTU2LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkp
IHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAg
ICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5v
dEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xNzYsMTAgKzE3NiwxMCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXNJZ25vcmVkOwogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAg
ICAgICAgICAgc2l6ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9
PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkg
ewogICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0
cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYg
KGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIz
LDExICsyMjMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29m
ZnNldCA9PSBub3RGb3VuZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQu
bV9vZmZzZXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQu
bV9vZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1f
b2Zmc2V0KSkgewogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAg
ICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFp
bi5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIEdldEJ5SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2lu
Y2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5j
bHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAg
ICBHZXRCeUlkU3RhdHVzKCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAg
ICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNl
dCkKICAgICB7CiAgICAgfQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRl
IHN0YXRlLCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQgPSBTdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBK
U1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFp
biA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0
dXJlKj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0
YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBt
X2NoYWluKGNoYWluKQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0
dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQog
ICAgIGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2No
YWluOyB9IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNz
LgogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNW
YWx1ZTsgfSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1
ZS4KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAog
ICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0K
ICAgICAKQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1
Y3R1cmVTZXQ7CiAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBt
X3NwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0
IG1fb2Zmc2V0OwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw2ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93
aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhv
cF9yZXNvbHZlX3dpdGhfdGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAg
ICAgIG1hY3JvKG9wX2dldF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisg
ICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHBy
b2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lk
X2NoYWluLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAg
ICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0g
ICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xv
YmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RG
b3VuZCk7CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9i
eV9pZAorICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAg
ICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAw
LCAwLCBvZmZzZXQpOwogICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdAotICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAg
ICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVj
dGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUp
OwogICAgIEFTU0VSVChjaGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVj
dHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAo
b2Zmc2V0ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
bmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwor
ICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSwgY2hhaW4sIG9mZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQo
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxh
Y2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7
CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAg
ICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdl
dCgpLAogICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBh
Y2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRC
eUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51
LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAog
ICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAg
ICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAg
ICAgIFNpbXBsZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAg
ICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAg
ICAgIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
VGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8g
RU5BQkxFKEpJVCkKLSAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5
SWRTdGF0dXNfaAogI2RlZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAg
ICAgICAgLCBtX25ld1N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkK
LSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAg
IHNpemVfdCBvZmZzZXQpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAg
OiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkK
ICAgICAgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9z
dGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NF
UlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAg
ICAgICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVy
ZUNoYWluKTsKLSAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9z
dGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAg
ICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Ns
b3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7
IH0KICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3Ry
dWN0dXJlOyB9CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRl
bnRpZmllciYpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1f
b2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0
dXJlQ2hhaW4qIG1fc3RydWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFBy
b3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2
LDkgQEAgc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cgogewogICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2stPmdsb2JhbERhdGEoKSwg
aWRlbnRpZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChv
ZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAg
ICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAgICAgcmV0dXJuIFJlc29s
dmVHbG9iYWxTdGF0dXMoUmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxlLCBzdHJ1Y3R1cmUsIG9m
ZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1
c19oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAg
ICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNl
dCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBj
bGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2lu
Z0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNl
dCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3Ry
dWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBz
Y3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAg
ICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAg
ICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50
MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFD
aGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
c3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1
Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxv
YWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
ZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxG
dW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
ICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAog
ICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAgIGNvbnN0IEdldEJ5SWRT
dGF0dXMmKTsKQEAgLTE2MzAsMjUgKzE2MzAsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ29uc3RhbnRJbnRlcgogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeU9mZnNl
dCgKICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBib29sIHVz
ZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZzZXQpCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQogewogICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgc2l6ZV90IG9mZnNldE9m
ZnNldDsKLSAgICBpZiAodXNlSW5saW5lU3RvcmFnZSkgeworICAgIGlmIChpc0lubGluZU9mZnNl
dChvZmZzZXQpKQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICBBU1NF
UlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAg
ICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KTsKLSAgICB9IGVsc2UgeworICAgIGVsc2UKICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRk
VG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICBvZmZzZXRPZmZzZXQg
PSAwOwotICAgIH0KICAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAogICAgICAgICBhZGRUb0dy
YXBoKAogICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAogICAgICAgICAgICAgcHJvcGVy
dHlTdG9yYWdlKSk7CiAgICAgICAgIAogICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nl
c3NEYXRhOwotICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IG9mZnNldCArIG9mZnNldE9m
ZnNldDsKKyAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNl
KG9mZnNldCk7CiAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50
aWZpZXJOdW1iZXI7CiAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9y
YWdlQWNjZXNzRGF0YSk7CiB9CkBAIC0xNjc3LDcgKzE2NzIsNiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgoQ2hl
Y2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnZXRCeUlkU3RhdHVz
LnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOwogICAgIAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFn
ZTsKICAgICBpZiAoIWdldEJ5SWRTdGF0dXMuY2hhaW4oKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
U3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQo
KS5zaW5nbGV0b25TdHJ1Y3R1cmUoKTsKICAgICAgICAgSlNPYmplY3QqIGN1cnJlbnRPYmplY3Qg
PSAwOwpAQCAtMTY4Niw5ICsxNjgwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKICAgICAgICAgICAgIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLmNoYWlu
KClbaV07CiAgICAgICAgICAgICBiYXNlID0gYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKGN1
cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIHVzZUlu
bGluZVN0b3JhZ2UgPSBjdXJyZW50U3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpOwot
ICAgIH0gZWxzZQotICAgICAgICB1c2VJbmxpbmVTdG9yYWdlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1
Y3R1cmVTZXQoKS5hbGxBcmVVc2luZ0lubGluZVByb3BlcnR5U3RvcmFnZSgpOworICAgIH0KICAg
ICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBidWdzIGxpa2UgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3ZSBuZWVkIHRvCiAgICAgLy8gZW5zdXJlIHRoYXQg
dGhlIGJhc2Ugb2YgdGhlIG9yaWdpbmFsIGdldF9ieV9pZCBpcyBrZXB0IGFsaXZlIHVudGlsIHdl
J3JlIGRvbmUgd2l0aApAQCAtMTcwNyw4ICsxNjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICB9CiAgICAgCiAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCi0gICAg
ICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdXNlSW5saW5lU3RvcmFnZSwKLSAgICAgICAgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7Cisg
ICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnByZXBhcmVUb1BhcnNlQmxvY2soKQpAQCAtMjI1OSwyNSArMjI1MCwyMCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmICghaGFzRXhpdFNpdGUgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVJlcGxhY2UoKSkgewog
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwot
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgTm9k
ZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1
cy5vbGRTdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3Jh
cGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0
T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkp
LCBwcm9wZXJ0eVN0b3JhZ2UsIGJhc2UsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAg
ICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgp
ICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNl
dCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAg
ICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVu
ZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNFeGl0U2l0
ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlVHJhbnNp
dGlvbigpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0
dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gcHV0QnlJZFN0YXR1cy5uZXdTdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICAg
ICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09
IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkKICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlQ2hhaW5Jc1N0aWxsVmFsaWQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLApAQCAtMjMwOCwxNiArMjI5NCwxMSBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkpKSksCiAgICAgICAgICAg
ICAgICAgICAgIGJhc2UpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNpemVf
dCBvZmZzZXRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFn
ZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2Jq
ZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdl
LCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKLSAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICAg
ICAgUHV0QnlPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fc3Rv
cmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwKQEAgLTIzMjYsNyArMjMwNyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgdmFsdWUp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0
b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNl
dCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShwdXRCeUlk
U3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVu
dGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC0yNzM4LDggKzI3MTksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0aW9uLCBnbG9iYWxPYmplY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMuc3RydWN0dXJl
KCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0
dXMub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwg
c3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlTnVtYmVyKys7IC8vIFNraXAgb3ZlciB0aGUg
dW51c2VkIGdsb2JhbCByZXNvbHZlIGluZm8uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Miw2ICsxNzIsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAj
ZW5kaWYKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkp
OwogICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0
d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9w
cm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkpOworICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1N0b3JhZ2VMb2FkID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5M
b2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3By
b3BlcnR5U3RvcmFnZUxvYWQpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuYmFzZUdQUiA9IG1f
cHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgaW5mby5wYXRjaC5kZmcudmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1
ZUdQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBAIHN0cnVjdCBQcm9wZXJ0
eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJh
dG9yKiBzbG93UGF0aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRv
bmUsCkBAIC0xNDgsNiArMTQ5LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9w
ZXJ5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0
IHRhZ0xvYWRPclN0b3JlLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFj
dCBwYXlsb2FkTG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0
aEdlbmVyYXRvciwKQEAgLTE2MSw2ICsxNjMsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNv
cmQgewogICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICAsIG1fc3Ry
dWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoZWNrKHN0cnVj
dHVyZUNoZWNrKQorICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3Jh
Z2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICwgbV9sb2FkT3JTdG9yZShsb2Fk
T3JTdG9yZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xODIsNiArMTg1LDcgQEAgc3Ry
dWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJlQ2hlY2s7CisgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IG1fbG9hZE9yU3RvcmU7CiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRp
YyB2b2lkIGRmZ1JlcGF0Y2hDYWxsKENvZGVCbG9jayogY28KICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGRmZ1JlcGF0
Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG9mZnNldCwgY29uc3QgRnVu
Y3Rpb25QdHIgJnNsb3dQYXRoRnVuY3Rpb24sIGJvb2wgY29tcGFjdCkKK3N0YXRpYyB2b2lkIGRm
Z1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LCBjb25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQog
ewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01Miwx
OCArNTIsMTkgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZAogCiAg
ICAgLy8gUGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNo
ZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0
cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVP
ZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoY29tcGFjdCkKLSAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9h
ZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAg
ICBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUp
LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNW
YWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNp
emVvZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2Fk
T3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9y
U3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uo
b2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcgKzEwNiw3IEBAIHN0YXRpYyB2
b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBsaW5rUmVzdG9yZVNjcmF0Y2go
cGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJl
Q2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwog
fQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4s
IHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVM
b2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJl
bCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKK3N0YXRpYyB2b2lkIGdlbmVy
YXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBz
dWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsxNDAsMjMgQEAgc3RhdGljIHZv
aWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAgICBjdXJyU3RydWN0dXJlID0g
aXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3Qt
PmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIpOworICAgIGlmIChpc0lubGlu
ZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdHViSml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZFB0
cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSwgcmVzdWx0R1BSKTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCByZXN1bHRHUFIp
OworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAg
ICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZk91dE9mTGluZVN0b3Jh
Z2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0
R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Cisg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTM0OSwxMiArMzYwLDIwIEBAIHN0YXRp
YyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgIHx8IHNsb3Qu
Y2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKICAgICAgICAg
ICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6R2V0dGVy
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7Ci0gICAg
ICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSksIHNjcmF0Y2hHUFIpOwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CiAjZW5kaWYKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgc2NyYXRjaEdQUik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7
CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9m
ZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIHNj
cmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9u
Q2FsbEdldHRlcjsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zODUsMTMgKzQwNCwyMiBAQCBz
dGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICBoYW5k
bGVyQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOwogICAgICAgICAgICAgc3R1YkppdC5qdW1wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHRHUFIp
OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAg
ICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZz
ZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAg
ICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BS
KTsKKyNlbmRpZgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVz
dWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hl
ZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShz
bG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAgICAgICAgICAgICBpc0Rp
cmVjdCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTU2Nyw3ICs1OTUsNyBAQCBzdGF0aWMgdm9pZCBl
bWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAg
ICAKLSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJO
ZWVkZWQgfHwgIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkpIHsKKyAgICBpZiAo
c2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgaXNP
dXRPZkxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CiAgICAgICAgIHNjcmF0Y2hH
UFIgPSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7
CiAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAgICAgc3R1YkppdC5w
dXNoKHNjcmF0Y2hHUFIpOwpAQCAtNTg2LDIwICs2MTQsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1
dFJlcGxhY2VTdHViKAogI2VuZGlmCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAo
c3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3Jl
UHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQor
ICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQu
c3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
Uiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC02
ODUsMjAgKzcxMywyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAKICAg
ICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNh
Y2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVU
YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnN0SW5PdXRPZkxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHVi
Sml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVv
ZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCkBAIC03NTIsNyArNzgwLDcg
QEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tpcCBvcHRp
bWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpAQCAtODE1LDcgKzg0Myw3IEBA
IHN0YXRpYyBib29sIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIHNraXAgb3B0aW1p
emluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYwotICAgICAgICAgICAgaWYgKG9s
ZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDYgKzUwNSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVs
UHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBz
dHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKKyAgICBK
SVRDb21waWxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0LmxhYmVsSWdub3Jp
bmdXYXRjaHBvaW50cygpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9h
ZFdpdGhQYXRjaCA9IG1faml0LmxvYWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CiAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExvYWRXaXRoUGF0Y2ggPSBtX2ppdC5s
b2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC01NDcsNyArNTQ4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2pp
dC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAg
ICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAor
ICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVj
aywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIHRhZ0xvYWRXaXRoUGF0Y2gsIHBh
eWxvYWRMb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAogICAgICAgICAg
ICAgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVz
dWx0VGFnR1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0UGF5bG9hZEdQ
UiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCkBAIC01NjIsNiArNTYzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVy
KGJhc2VQYXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVVc2UsIFdyaXRlQmFycmllckZvclBy
b3BlcnR5QWNjZXNzLCBzY3JhdGNoR1BSKTsKIAorICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21w
aWxlcjo6RGF0YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSk7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9
IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklU
Q29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwpAQCAtNTk0LDcgKzU5Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRk
UHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAg
ICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAg
ICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHBy
b3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29t
cGFjdCh0YWdTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpEYXRhTGFiZWxDb21wYWN0KHBheWxvYWRTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAg
ICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZVBh
eWxvYWRHUFIpLApAQCAtMzU0Myw3ICszNTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJl
c3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCw3ICs0OTQsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1
bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6TGFiZWwg
cHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwor
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21w
YWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCks
IHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1f
aml0LmxhYmVsKCk7CkBAIC01MTQsOCArNTE1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAg
ICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5n
ZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9h
ZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVD
YXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKICAgICAg
ICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAgICBzcGlsbE1v
ZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2Ug
OiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzMsNyArNTM0LDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVy
KGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nl
c3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQu
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgc3RvcmVXaXRoUGF0
Y2ggPSBtX2ppdC5zdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVHUFIsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIDApKTsKIAogICAgIEpJVENvbXBpbGVyOjpMYWJl
bCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgpOwpAQCAtNTYzLDcgKzU2NSwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAg
ICAgICAgIGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0KLSAgICBtX2ppdC5h
ZGRQcm9wZXJ0eUFjY2VzcyhQcm9wZXJ0eUFjY2Vzc1JlY29yZChjb2RlT3JpZ2luLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFj
dChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2Fm
ZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZUdQUiksIHNhZmVD
YXN0PGludDhfdD4oc2NyYXRjaEdQUikpKTsKKyAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygK
KyAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gu
bGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsCisgICAgICAgICAgICBzYWZlQ2Fz
dDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8
aW50OF90PihzY3JhdGNoR1BSKSkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
LnJlbGVhc2UoKSk7CiB9CiAKQEAgLTM1NjcsNyArMzU3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAK
LSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIHN0
b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMzg4Myw5ICszODg5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlc0RvbnRNYXRjaCA9IG1f
aml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CiAKICAgICAgICAgLy8gRmFzdCBjYXNlCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXNvbHZlSW5mb0dQUiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZv
LCBvZmZzZXQpKSwgcmVzb2x2ZUluZm9HUFIpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6
OlNjYWxlUHRyKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbmxp
bmUgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpMZXNzVGhhbiwg
cmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGhhdmVTdG9yYWdlID0gbV9qaXQuanVtcCgpOworICAgICAg
ICBpc0lubGluZS5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1t
MzIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFj
aXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BS
KTsKKyAgICAgICAgaGF2ZVN0b3JhZ2UubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklU
Q29tcGlsZXI6OlNjYWxlUHRyLCAtaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFs
dWUpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTgwLDggKzIxODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlci4K
LSAgICAgICAgbV9qaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9m
KEpTT2JqZWN0KSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0LnN0b3Jl
UHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgQ2xhc3NU
eXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKICAg
ICB9CiAKICAgICAvLyBJdCBpcyBhY2NlcHRhYmxlIHRvIGhhdmUgc3RydWN0dXJlIGJlIGVxdWFs
IHRvIHNjcmF0Y2gsIHNvIGxvbmcgYXMgeW91J3JlIGZpbmUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcg
KzMzMyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICAgICB9
CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KGNlbGwpKSB7Ci0gICAgICAgIEpTT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOworICAgICAg
ICBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCks
IHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MTcsNyArMzcxNyw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAgICAgICAgIEpTVmFsdWUgZXhwZWN0ZWRTdWJzY3JpcHQgPSBjYWxsRnJhbWUtPnIoZXhw
ZWN0ZWQpLmpzVmFsdWUoKTsKICAgICAgICAgaW50IGluZGV4ID0gY2FsbEZyYW1lLT5yKGkpLmko
KSAtIDE7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0OwotICAgICAgICBpbnQgb2Zmc2V0ID0gMDsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gMDsKICAgICAgICAgaWYgKHN1YnNjcmlw
dCA9PSBleHBlY3RlZFN1YnNjcmlwdCAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgKGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkgPT0gaXQtPmNhY2hlZFN0cnVjdHVyZSgpKSAmJiBpdC0+
Z2V0T2Zmc2V0KGluZGV4LCBvZmZzZXQpKSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoZHN0KSA9IEpTVmFsdWUoYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0RGlyZWN0T2Zmc2V0
KG9mZnNldCkpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3Bu
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMTYzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQorICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4ICszMjAsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC01MzcsNiArNTQxLDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQ
YXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4pOwog
ICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKICAgICAg
ICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVDaGVjayA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVDaGVjaykpOworICAgICAgICBpbmZvLnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkBAIC01
NTAsNiArNTU1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQog
ICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2lu
TG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAg
aW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YocHV0U3RydWN0dXJlVG9Db21wYXJlKSk7CisgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVy
OjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0
aEJlZ2luOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIGdldFN0cnVjdHVy
ZVRvQ29tcGFyZTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgZ2V0U3Ry
dWN0dXJlQ2hlY2s7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3Jh
Z2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxDb21wYWN0IGdldERpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTE4NSwxNyArMTg2
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKIAotICAgICAgICBQcm9wZXJ0eVN0dWJD
b21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm8oCisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJHZXRCeUlkX1Qs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVn
aW4sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVj
dHVyZUNoZWNrLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnR5U3Rv
cmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
ZGlzcGxhY2VtZW50TGFiZWwsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJl
bCwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVj
dHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hl
Y2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLCBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxLAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLAogI2VuZGlmCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQogICAgICAgICAgICAg
OiBtX3R5cGUoR2V0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2luKQogICAgICAgICAg
ICAgLCBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJlVG9Db21wYXJlKQogICAgICAgICAg
ICAgLCBnZXRTdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKKyAgICAgICAgICAgICwgcHJv
cGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgICAgICAsIGdldERpc3BsYWNlbWVudExhYmVsKGRpc3BsYWNlbWVudExhYmVsKQog
I2Vsc2UKQEAgLTIwNiwxNSArMjE0LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oCisg
ICAgICAgICAgICBQcm9wZXJ0eVN0dWJQdXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsKQor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
CiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJl
bDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIpCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
MgogI2VuZGlmCisgICAgICAgICAgICApCiAgICAgICAgICAgICA6IG1fdHlwZShQdXRCeUlkKQog
ICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAs
IGhvdFBhdGhCZWdpbihob3RQYXRoQmVnaW4pCisgICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFn
ZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICAgICAgICAgICAgICwgcHV0U3RydWN0dXJlVG9D
b21wYXJlKHN0cnVjdHVyZVRvQ29tcGFyZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAg
ICAgLCBwdXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKQEAgLTI5NSw0MCAr
MzA5LDQwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIEpJVChnbG9iYWxE
YXRhLCBjb2RlQmxvY2spLnByaXZhdGVDb21waWxlKGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBl
ZmZvcnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQ
cm90byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZUdldEJ5SWRQcm90byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAg
ICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAg
ICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4Owog
ICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKHN0dWJJbmZvLCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgcmV0
dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRl
eCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAg
ICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChzdHViSW5mbywgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzLCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3Qs
IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwg
aW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5
dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQu
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1
cmVMaXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVu
dCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9Ci0gICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90
eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIGNoYWluLCBjb3VudCwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1l
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW4o
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNv
bXBpbGVHZXRCeUlkQ2hhaW4oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2sp
OwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihzdHViSW5m
bywgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJl
dHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MsIGJvb2wgZGlyZWN0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVC
bG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRl
Y29kZUluZGV4OwpAQCAtMzU4LDggKzM3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVT
dHViSW5mbyopOwogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoUHV0QnlJZChSZXBhdGNo
QnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hH
ZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpOwotICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayog
Y29kZWJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogICAgICAgICBzdGF0aWMgdm9pZCBw
YXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqIGNvZGVibG9jaywg
TWV0aG9kQ2FsbExpbmtJbmZvJiwgU3RydWN0dXJlU3R1YkluZm8mLCBKU09iamVjdCosIFN0cnVj
dHVyZSosIEpTT2JqZWN0KiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAt
Mzc3LDEyICszOTEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVMaW5rUGFzcygpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7
CiAgICAgICAgIEpJVENvZGUgcHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFy
aXR5Q2hlY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7
CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpb24oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlPiBwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhKU0ds
b2JhbERhdGEqLCBUcmFtcG9saW5lU3RydWN0dXJlKik7CiAgICAgICAgIExhYmVsIHByaXZhdGVD
b21waWxlQ1RJTmF0aXZlQ2FsbChKU0dsb2JhbERhdGEqLCBib29sIGlzQ29uc3RydWN0ID0gZmFs
c2UpOwpAQCAtNDY4LDEwICs0ODIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNs
b3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sg
PSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNp
emVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
SlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBh
eWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJ
RCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2
b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lz
dGVySUQgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQs
IHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVl
UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAogICAgICAgICAvLyBBcml0
aG1ldGljIG9wY29kZSBoZWxwZXJzCiAgICAgICAgIHZvaWQgZW1pdEFkZDMyQ29uc3RhbnQodW5z
aWduZWQgZHN0LCB1bnNpZ25lZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0VHlwZSBvcFR5
cGUpOwpAQCAtNTQ3LDEwICs1NjEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKik7CiAgICAg
ICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VW
UmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09i
amVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQg
b2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVk
T2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDI5LDExICs0MjksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBib29sIGRlc3Ry
CiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0
OjpvZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKIAogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgotICAgIGlmIChDbGFzc1R5cGU6Omhhc0lubGlu
ZVN0b3JhZ2UoKSkgewotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVj
dCkpLCByZXN1bHQsIHN0b3JhZ2VQdHIpOwotICAgICAgICBzdG9yZVB0cihzdG9yYWdlUHRyLCBB
ZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVz
dWx0LCBDbGFzc1R5cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKKyAgICBzdG9yZVB0
cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgSklUOjplbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklE
IHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsOSArNzAxLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAgICAgLy8gTG9h
ZCBjYWNoZWQgcHJvcGVydHkKICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBh
bHdheXMgdXNlcyBleHRlcm5hbCBzdG9yYWdlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSkpLCByZWdU
MCk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNv
bHZlSW5mbywgb2Zmc2V0KSksIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMCwg
cmVnVDEsIFNjYWxlUHRyKSwgcmVnVDApOworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVn
VDAsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzMsNyArMzMzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCgpCiAgICAg
UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihw
YXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAgIGFkZFNsb3dDYXNlKHN0cnVjdHVy
ZUNoZWNrKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDIpOworICAgIExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAg
ICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSA9IGxvYWRQdHJXaXRoQ29tcGFj
dEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QyLCBwYXRjaEdldEJ5SWREZWZhdWx0T2Zm
c2V0KSwgcmVnVDApOyAvLyBwYXlsb2FkCiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1l
bnRMYWJlbDIgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhy
ZWdUMiwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QxKTsgLy8gdGFnCiAgICAgCkBA
IC0zNDEsNyArMzQyLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCgpCiAgICAg
CiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VHZXRCeUlkSG90UGF0aCk7
CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwg
aG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBkaXNwbGFj
ZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7CisgICAgbV9wcm9w
ZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25J
bmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwg
c3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwg
ZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3VsdCkpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0zOTks
NyArNDAwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAg
IERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogICAgIAotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZWdUMSk7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNl
bWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMiwgQWRkcmVz
cyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2FkCiAgICAgRGF0
YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBh
dGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8v
IHRhZwogICAgIApAQCAtNDA3LDcgKzQwOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyLCByZWdU
MSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5
QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2Rl
T2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFi
ZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRp
b25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0
QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFi
ZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKQEAgLTQzMCwzMCArNDMyLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQo
SW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVy
dHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlUHV0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJ
RCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAg
aW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNP
YmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBlbWl0U3RvcmUo
b2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAoaXNPdXRPZkxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OzpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIGVtaXRTdG9y
ZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2YWx1ZVBheWxv
YWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3Bl
cnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3Rl
cklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGls
ZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBS
ZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsK
LSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGluZU9mZnNldChj
YWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2Fj
aGVkT2Zmc2V0KSwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gcmVzdWx0UGF5bG9hZDsKICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdl
KCkpLCB0ZW1wKTsKLSAgICBlbWl0TG9hZChvZmZzZXQsIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9h
ZCwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQp
LCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOwogfQogCi12b2lkIEpJVDo6Y29tcGls
ZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJl
Z2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0
VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0
VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7Cisg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFz
ZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHRUYWcpOworICAgIGxvYWQzMihB
ZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNz
KHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBi
b29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVj
dCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMg
dGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0
aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJN
KQpAQCAtNTUzLDcgKzU2Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGluZShyZXR1cm5B
ZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUuY29kZSgpKSk7
CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6
cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zm
c2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZl
ciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01NjUsMTEgKzU3OCwxMiBAQCB2
b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvCiAKICAgICAvLyBQYXRjaCB0
aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNo
IHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJl
bDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkp
OyAvLyBwYXlsb2FkCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3Ry
dWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0
Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSk7IC8vIHBheWxvYWQKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
OyAvLyB0YWcKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Ym9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihj
b2RlQmxvY2spOwogICAgIApAQCAtNTgxLDggKzU5NSw5IEBAIHZvaWQgSklUOjpwYXRjaFB1dEJ5
SWRSZXBsYWNlKENvZGVCbG9jayoKIAogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUg
cHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBs
b29rIGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuc3Ry
dWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAvLyBwYXlsb2FkCi0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zm
c2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAg
ICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2gudS5wdXQucHJvcGVydHlTdG9y
YWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpOyAvLyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRB
cnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjQ0
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0
cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
YXRjaGVkT2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICAKQEAgLTcwMCw3ICs3MTUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RyCiB9CiAKIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgLy8gcmVn
VDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgSnVtcCBmYWlsdXJlQ2FzZSA9IGNoZWNrU3RydWN0dXJl
KHJlZ1QwLCBzdHJ1Y3R1cmUpOwpAQCAtNzYwLDcgKzc3NSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3Ry
dWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtODI5
LDcgKzg0NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QKICAg
ICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0
dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90
IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEFTU0VSVChjb3VudCk7CkBAIC05MDQs
NyArOTE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgog
ICAgIEFTU0VSVChjb3VudCk7CkBAIC05NzksOSArOTk0LDE0IEBAIHZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGUKIHsKICAgICBBU1NFUlQoc2l6ZW9mKEpTVmFsdWUpID09
IDgpOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9m
ZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0
LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJl
c3VsdFRhZyk7CisgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7Cisg
ICAgSnVtcCBkb25lID0ganVtcCgpOworICAgIGlzSW5saW5lLmxpbmsodGhpcyk7CisgICAgYWRk
UHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAg
IGRvbmUubGluayh0aGlzKTsKKyAgICBsb2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGlt
ZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxv
YWQpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0
eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEwMDYsNiArMTAyNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVj
dGkKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cmVnVDMsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLCBtX251bUNhY2hlYWJsZVNsb3RzKSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJl
Z1QzKTsKICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJl
Z1QzKTsgICAgCiAgICAgCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDggKzE1MywxNSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAKIHZvaWQgSklUOjpjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQg
b2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9h
ZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7Cisg
ICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBKdW1wIGlzSW5saW5l
ID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VD
YXBhY2l0eSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7Cisg
ICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpLCBiYXNlLCBzY3JhdGNoKTsKKyAgICBkb25lLmxpbmsodGhpcyk7
CisgICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgLWlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMzczLDE0ICszODAsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aChp
bnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRTbG93
Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJl
Z1QwKTsKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsID0gbG9hZFB0cldp
dGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDAsIHBhdGNoR2V0QnlJZERl
ZmF1bHRPZmZzZXQpLCByZWdUMCk7CiAKICAgICBMYWJlbCBwdXRSZXN1bHQodGhpcyk7CiAKICAg
ICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAot
ICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQ
YXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVu
dExhYmVsLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
LmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwg
bV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCwgcHV0UmVz
dWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKQEAgLTQ0MCwxNCArNDQ4LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0
cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsK
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFMYWJlbDMy
IGRpc3BsYWNlbWVudExhYmVsID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1Qx
LCBBZGRyZXNzKHJlZ1QyLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7CiAKICAgICBFTkRf
VU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogCiAgICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRl
cywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vz
c0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3Bl
cnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJl
VG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21w
aWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0
dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29t
cGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwpKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDcxLDI4ICs0
ODAsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogCiAvLyBD
b21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92
ZXJ3cml0ZSB0aGUKIC8vIHZhbHVlIGluIG9iamVjdFJlZy4KLXZvaWQgSklUOjpjb21waWxlUHV0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewot
ICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
YmFzZSk7Ci0gICAgc3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgb2Zmc2V0KSk7CisgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgc3RvcmVQdHIodmFs
dWUsIEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2l6
ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgc3RvcmVQdHIo
dmFsdWUsIEFkZHJlc3MoYmFzZSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKIH0KIAogLy8gQ29tcGlsZSBhIGxvYWQgZnJvbSBhbiBv
YmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6
OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFs
dWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKSksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0
KSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNl
dCkpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIo
QWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1
bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBK
SVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSwgcmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBjYWNoZWRPZmZzZXQgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihiYXNlLT5sb2NhdGlvbkZv
ck9mZnNldChjYWNoZWRPZmZzZXQpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1
bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHQp
OwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIEp1bXBMaXN0IGZh
aWx1cmVDYXNlczsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBT
dHJ1Y3R1cmUuCkBAIC01MjIsNyArNTQ0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpbwogI2VuZGlmCiAgICAgCiAgICAgLy8gZW1pdCBhIGNhbGwgb25seSBpZiBz
dG9yYWdlIHJlYWxsb2MgaXMgbmVlZGVkCi0gICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9j
ID0gb2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJl
YWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmICh3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jKSB7
CiAgICAgICAgIC8vIFRoaXMgdHJhbXBvbGluZSB3YXMgY2FsbGVkIHRvIGxpa2UgYSBKSVQgc3R1
YjsgYmVmb3JlIHdlIGNhbiBjYW4gY2FsbCBhZ2FpbiB3ZSBuZWVkIHRvCiAgICAgICAgIC8vIHJl
bW92ZSB0aGUgcmV0dXJuIGFkZHJlc3MgZnJvbSB0aGUgc3RhY2ssIHRvIHByZXZlbnQgdGhlIHN0
YWNrIGZyb20gYmVjb21pbmcgbWlzYWxpZ25lZC4KQEAgLTUzMiw3ICs1NTQsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgICAgIHN0dWJDYWxsLnNraXBB
cmd1bWVudCgpOyAvLyBiYXNlCiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyBp
ZGVudAogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gdmFsdWUKLSAgICAgICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVk
SW1tMzIob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSk7CiAgICAgICAgIHN0
dWJDYWxsLmNhbGwocmVnVDApOwogICAgICAgICBlbWl0R2V0SklUU3R1YkFyZygyLCByZWdUMSk7
CkBAIC01NzIsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFk
ZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsK
IH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpw
YXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTgwLDE0ICs2MDIsMTMgQEAgdm9pZCBK
SVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJs
eSBnbyB0byBjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8gYW55dGhp
bmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVy
VG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Nl
bGZfZmFpbCkpOwogCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9m
ZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0
byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJB
dE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJl
KSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNl
dExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCks
IGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAKLXZvaWQgSklUOjpwYXRj
aFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBhdGNo
UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTk1LDExICs2MTYs
MTAgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogICAgIC8vIFNo
b3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNu
J3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihkaXJlY3Qg
PyBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1dF9ieV9pZF9nZW5l
cmljKSk7CiAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0
OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxv
YWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBz
dHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRp
c3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0
cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZM
aW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3
ICs2NjMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9i
amVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2Nr
IGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0
aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxl
IG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3ICs3MzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1
bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9f
bGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1
cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVk
c1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAsNyArNzkwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2Nh
dGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMg
KGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVj
dHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBs
ZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04
MzksNyArODU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwo
c3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudElu
ZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcg
KzkzNCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJS
b3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
ODYsMTMgKzE0ODYsMTYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXRf
YgogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
ICAgICBpbnQzMl90IG9sZFNpemUgPSBzdGFja0ZyYW1lLmFyZ3NbM10uaW50MzIoKTsKICAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHN0YWNrRnJhbWUuYXJnc1s0XS5zdHJ1Y3R1cmUoKTsK
LSAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCk7CisgICAgaW50MzJfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpOworICAgIAorICAgIEFTU0VSVChvbGRTaXplID49IDApOworICAgIEFTU0VSVChuZXdT
aXplID4gb2xkU2l6ZSk7CiAKICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAg
IEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEgPSAqc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwotICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBvbGRT
aXplLCBuZXdTaXplKTsKLSAgICBiYXNlLT5zZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
bmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFn
ZSA9IGJhc2UtPmdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1Np
emUpOworICAgIGJhc2UtPnNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFn
ZSwgbmV3U3RydWN0dXJlKTsKIAogICAgIHJldHVybiBiYXNlOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjE2
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
cHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0
dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk0MCw3ICs5NDYsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAmJiBiYXNl
Q2VsbCA9PSBzbG90LmJhc2UoKSkgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
PT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2Ug
Y2FsbApAQCAtOTUyLDcgKzk1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJl
LnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0
cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwyOCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAg
IHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bj
b2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CiAg
ICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwot
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtOTE5LDYgKzkxOSwxNyBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGRpc3BhdGNoKDMp
CiAKIAorbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwg
b2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQs
IElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
b3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAg
IGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5l
U3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5y
ZWFkeToKKyAgICBsb2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29i
amVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJv
cGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXpl
LCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAgIERl
c3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KQEAgLTkzMCw5ICs5NDEsNyBAQCBtYWNybyByZXNvbHZl
R2xvYmFsKHNpemUsIHNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CiAgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdwogICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDEsIDhdLCB0MgotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwg
dDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQogICAg
IGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMDk2
LDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQog
CiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5
X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4g
V2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYg
ZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNr
eSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0
UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8g
bW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2Rp
ZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hl
IHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGluZy1wb25naW5nIGlz
IGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGlu
dWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdl
IHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4g
ZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdl
dEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0g
ICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9m
aWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQorICAgICAgICAg
ICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAg
ICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAg
ICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkaSAz
MltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgCisgICAgICAgIC5vcEdldEJ5SWRTbG93Ogor
ICAgICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCiAKLS5vcEdldEJ5SWRTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNw
YXRjaCg5KQorX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9y
YWdlKQorCisKK19sbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CisgICAgZ2V0QnlJZCh3
aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6
CkBAIC0xMTMwLDY4ICsxMTUyLDk2IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoK
ICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9wdXRfYnlfaWQ6CittYWNybyBwdXRCeUlk
KGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQ
Q10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENd
LCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxv
YWRpIDIwW1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQy
KQotICAgIHdyaXRlQmFycmllcih0MCwgdDIpCi0gICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMs
IHQxXQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCi0gICAgZGlzcGF0Y2go
OSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAg
ICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAg
IGxvYWRpIDIwW1BDXSwgdDEKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQyLCBzY3JhdGNoLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihzY3JhdGNoLCB0MikK
KyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0
MV0KKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2Us
IHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCiAKIC5vcFB1
dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkK
ICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0
aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0
aW9uKGFkZGl0aW9uYWxDaGVja3MpCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFs
Q2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
IDEyW1BDXSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpIDIwW1BDXSwgdDEKLSAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQz
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKLSAgICB3cml0ZUJh
cnJpZXIodDEsIHQyKQotICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQotICAgIGxvYWRpIDI0
W1BDXSwgdDEKLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgc3RvcmVwIHQx
LCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVy
dHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9w
ZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3Jh
Z2UsIHQzCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQy
KQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICAgICAgICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W3QzXQorICAgICAgICAgICAgbG9hZGkgMjRbUENdLCB0MQorICAgICAgICAg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgICAgICAgICAgc3RvcmVwIHQxLCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAg
ZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3Jh
dGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUg
b2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKworICAgIGxvYWRwIDI4W1BDXSwg
c2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAg
ICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBh
c3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgYmllcSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25l
CisubG9vcDoKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0
Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFkZHAgNCwgc2NyYXRjaAorICAgIGJpbmVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxv
b3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xv
dykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdp
dGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1
cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1
Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3Rv
Ci0gICAgICAgIAotICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCi0gICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICAgICAg
ICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAg
IGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBO
dWxsVGFnLCAuZG9uZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAot
ICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1
Y3R1cmUKLSAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Ci0g
ICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKLSAg
ICAgICAgLmRvbmU6Ci0gICAgICAgIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1
cmVDaGFpbkNoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihz
dHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29w
X2dldF9ieV92YWw6CkBAIC0xMjYxLDkgKzEzMTEsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1l
OgogICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKICAgICBzdWJpIDEsIHQwCiAgICAgYmlhZXEg
dDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BH
ZXRCeVBuYW1lU2xvdwotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0s
IHQyCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9vZmZzZXRCYXNlW3QzXSwgdDAKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQw
LCB0MiwgdDEsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MSwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTc3
OCw2ICs3NzgsMTYgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBkaXNwYXRjaCgzKQogCiAK
K21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVj
dEFuZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3Jh
Z2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3Rv
cmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkK
Ky5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElu
bGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBs
b2FkcCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0
eU9mZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93
KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBE
ZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArNzk5LDcgQEAgbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQogICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQ
QywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAK
LSAgICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAg
dDIsIFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQw
CkBAIC05MzcsNyArOTQ2LDcgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAg
IGRpc3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0
UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8g
bW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2Rp
ZnkgdGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hl
IHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NTcsMzAgQEAg
X2xsaW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9h
ZGlzIDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdl
dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQy
XSwgdDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywg
OF0sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdl
dFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNy
byAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhb
UEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwg
c2NyYXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAg
ICAgICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShz
Y3JhdGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAg
ICAgICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKIAotLm9wR2V0
QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQot
ICAgIGRpc3BhdGNoKDkpCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBn
ZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRz
X2xlbmd0aDoKQEAgLTk3OCw2NSArOTk5LDkzIEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9wdXRfYnlfaWQ6CittYWNybyBw
dXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9h
ZGlzIDI0W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgd3JpdGVCYXJyaWVyKHQwKQotICAgIHN0b3JlcCB0MCwg
W3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAg
ICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3Jh
dGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCisgICAgICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCBzY3JhdGNoKQorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKHQwKQorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtwcm9wZXJ0eVN0b3Jh
Z2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCiAKIC5v
cFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9p
ZCkKICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQo
d2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToK
KyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCi1tYWNybyBwdXRCeUlkVHJhbnNp
dGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlv
bmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAg
IGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9w
UHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGlzIDQw
W1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qw
XSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQx
KQotICAgIHdyaXRlQmFycmllcih0MSkKLSAgICBzdG9yZXAgdDEsIFt0M10KLSAgICBsb2FkcCA0
OFtQQiwgUEMsIDhdLCB0MQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0K
LSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisg
ICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAg
ICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEpCisg
ICAgICAgICAgICBzdG9yZXAgdDEsIFt0M10KKyAgICAgICAgICAgIGxvYWRwIDQ4W1BCLCBQQywg
OF0sIHQxCisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisg
ICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gbm9BZGRp
dGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAorCittYWNybyBzdHJ1Y3R1
cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgY29uc3QgcHJvdG9DZWxs
ID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZv
ciB0aGUgcHJvdG8KKyAgICBsb2FkcCA1NltQQiwgUEMsIDhdLCBzY3JhdGNoCisgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxvYWRwIFN0cnVjdHVyZUNo
YWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0
cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBicGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZHAgU3RydWN0dXJl
OjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGJwbmVxIG9sZFN0cnVj
dHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFkZHAgOCwgc2NyYXRjaAorICAg
IGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAu
bG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBz
bG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRo
SW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywg
d2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAgICAgICAgbWFjcm8gKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0
cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHBy
b3RvCi0gICAgICAgICAgICBsb2FkcCA1NltQQiwgUEMsIDhdLCBzY3JhdGNoCi0gICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICAgICAg
ICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAg
IGJwZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5k
b25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBv
bGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA4LCBzY3JhdGNo
Ci0gICAgICAgICAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0s
IFZhbHVlTnVsbCwgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0gICAgICAgIGVuZCkKKyAgICBwdXRC
eUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aE91dE9mTGluZVN0
b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBAIC0xMTA2LDggKzExNTUsOCBAQCBf
bGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0sIHQzCiAgICAgc3ViaSAxLCB0MwogICAgIGJpYWVxIHQzLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QxXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRwIFt0MCwgdDMs
IDhdLCB0MAorICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9vZmZzZXRCYXNlW3Qx
XSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDApCiAgICAg
bG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XQogICAg
IGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTg0LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsg
VGEKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CiAKKyMg
UHJvcGVydHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFMVUU2NAorICAgIGNvbnN0IElubGlu
ZVN0b3JhZ2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHkgPSA2CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50cwogaWYgSlNWQUxVRTY0CiAgICAg
Y29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMQpAQCAtMzEyLDggKzMxOSw3IEBA
IG1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmQKICAgICAgICAgc3RvcmVw
IHNjcmF0Y2gyLCBbcmVzdWx0XQogICAgICAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRv
cklEW3Jlc3VsdF0KLSAgICAgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRj
aDEKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
cmVzdWx0XQorICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVty
ZXN1bHRdCiAgICAgZW5kCiBlbmQKIApAQCAtNDgxLDYgKzQ4NywyMSBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV93aXRoX3RoaXM6CiAgICAgZGlzcGF0Y2goNSkKIAogCittYWNybyB3aXRoSW5saW5lU3Rv
cmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGludWF0aW9uKQorICAgICMgSW5kaWNh
dGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUK
KyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0ZXIgaXMgdW51c2VkLgorICAgIGNvbnRpbnVh
dGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkKK2VuZAorCittYWNybyB3aXRoT3V0T2ZMaW5l
U3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGludWF0aW9uKQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0XSwgcHJvcGVydHlTdG9yYWdlCisg
ICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBwcm9wZXJ0eVN0b3JhZ2UgcmVnaXN0ZXIgbm93IHBvaW50
cyB0byB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UsIGFuZCB0aGF0IHRoZSBvYmplY3QgcmVn
aXN0ZXIgbWF5IGJlIHJldXNlZAorICAgICMgaWYgdGhlIG9iamVjdCBwb2ludGVyIGlzIG5vdCBu
ZWVkZWQgYW55bW9yZS4KKyAgICBjb250aW51YXRpb24ocHJvcGVydHlTdG9yYWdlLCBvYmplY3Qp
CitlbmQKKworCiBfbGxpbnRfb3BfZGVsX2J5X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWxfYnlfaWQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTU1
NSw3ICs1NTUsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICBlbmQKICAgICAKICAgICBkZWYg
aGFuZGxlWDg2QWRkKGtpbmQpCi0gICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHVubGVzcyBJbW1lZGlh
dGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAg
IGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
CiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAog
ICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKICAg
ICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKQEAgLTU2OCw3ICs1NzIsMTEgQEAg
Y2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKLSAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZT
dWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAo
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBl
bmQKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1swXQogICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZm
aXgoa2luZCl9ICN7eDg2T3BlcmFuZHMoa2luZCwga2luZCl9IgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlOwotICAgICAgICBz
aXplX3QgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVu
Y3Rpb25OYW1lT2Zmc2V0OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJl
ck9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2
YXRlTmFtZVN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CkBAIC0yNjIsNyArMjYyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogYm91bmRG
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAg
c2l6ZV90IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1l
T2Zmc2V0OyB9CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgICAgIFN0cnVjdHVyZSog
bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBwcml2YXRlTmFtZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAg
U3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9p
bnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDI0ICs5Myw1NCBAQCB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiAg
ICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKKyAgICAKKyAgICBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICBQcm9wZXJ0eVN0
b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAo
c3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmluYWxPYmplY3QoKTsKKyAgICAgICAg
Ly8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9y
IHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMu
CisgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRB
cHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0
b3JhZ2VTaXplKTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFn
ZT4odGVtcCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3Rv
cmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgfQorCisgICAgaWYgKHRoaXNP
YmplY3QtPm1faW5oZXJpdG9ySUQpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2luaGVyaXRvcklEKTsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2aXNpdG9yLm1f
aXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0
TWFya1Zpb2xhdGlvbjsKKyNlbmRpZgorfQorCit2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0ZpbmFs
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24g
PSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgor
ICAgIAogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAot
ICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+cHJvcGVydHlTdG9yYWdl
KCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNp
emUpOwotICAgIGVsc2UgeworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVj
dC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVf
dCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9y
S25vd25GaW5hbE9iamVjdCgpOwogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBo
ZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJl
ZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IHN0b3Jh
Z2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICB2
aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9y
YWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKICAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0
PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fcHJvcGVydHlT
dG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKKyAgICAgICAg
dGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmll
cjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAgICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJ
RCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwog
CisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+aW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7CisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9
IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAjZW5kaWYKQEAgLTE1Myw4ICsx
ODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgZm9y
IChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUp
KSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
ICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTI3Miw3ICszMDIsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlCiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBpZiAodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChpc1ZhbGlkT2Zmc2V0
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkgewogICAgICAgICBpZiAoYXR0cmli
dXRlcyAmIERvbnREZWxldGUgJiYgIWV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJv
cGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgdGhpc09iamVjdC0+
cmVtb3ZlRGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKQEAgLTM5NCw3
ICs0MjQsNyBAQCBib29sIEpTT2JqZWN0Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjCiBib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpCisgICAgaWYgKGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldChl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgY291bGQgYmUgYSBmdW5j
dGlvbiB3aXRoaW4gdGhlIHN0YXRpYyB0YWJsZT8gLSBzaG91bGQgcHJvYmFibHkKQEAgLTUxNiwy
MCArNTQ2LDIwIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKIAog
Ym9vbCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlk
T2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0
ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RP
ZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3Ry
dWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChv
ZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChv
ZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1ICs1ODksMjIgQEAgU3RydWN0dXJl
KiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAgIHJldHVybiBtX2luaGVyaXRvcklE
LmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dQcm9wZXJ0eVN0b3Jh
Z2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogewog
ICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICAvLyBJdCdzIGltcG9ydGFudCB0
aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIHNpbmNlCiAgICAgLy8g
d2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zaXRpb24uCiAKLSAgICBQcm9wZXJ0
eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7Cisg
ICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fb3V0T2ZMaW5lU3RvcmFn
ZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gMDsKIAot
ICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgaWYgKCFvbGRQcm9wZXJ0eVN0
b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFr
ZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlw
ZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBuZXdQcm9wZXJ0eVN0b3Jh
Z2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShzaXpl
b2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdTaXplLCAmdGVtcCkpCiAgICAgICAg
ICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBvbGRQ
cm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlz
IGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0
aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQq
IHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQsOCArNjIxLDggQEAgYm9vbCBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG9iamVj
dC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgaWYgKG9mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJpYnV0
ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxOCArNzksMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5
IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIH07CiAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotI2Rl
ZmluZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA2Ci0jZWxzZQotI2RlZmlu
ZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA0Ci0jZW5kaWYKLQotQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IDApLCBmaW5h
bF9zdG9yYWdlX25vbl9uZWdhdGl2ZSk7CisgICAgY2xhc3MgSlNGaW5hbE9iamVjdDsKIAogICAg
IGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBC
YXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpTRmluYWxP
YmplY3Q7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogCkBAIC0xNjksMjYgKzE2NCw3MiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yCiAgICAgICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQg
dGhlIHByb3BlcnR5IG1hcC4KICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZv
dW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICAgfQog
CiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAg
ICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpu
b3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAogICAgICAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb247
Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5j
dGlvbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2Nh
dGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBv
ZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29u
c3QKKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3RydWN0
dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFn
ZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxDb25zdFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOworICAgICAg
ICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIC0gcHJvcGVydHlTdG9yYWdlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEp
OworICAgICAgICB9CisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2Uo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFnZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgIH0K
KyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENvbnN0
UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX291dE9m
TGluZVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0
b3JhZ2UoKSB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKworICAgICAgICBj
b25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgp
W29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAmb3V0
T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAg
ICAgfQorCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9y
YWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICAgICAgcmV0dXJu
ICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCldOwor
ICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0Rm9yTG9jYXRpb24oV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlc3VsdDsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJ
bklubGluZVN0b3JhZ2UgPSBsb2NhdGlvbiAtIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXRJbklubGluZVN0b3JhZ2UgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlu
bGluZVN0b3JhZ2VDYXBhY2l0eSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGxvY2F0aW9uIC0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICAgICAgdmFsaWRhdGVPZmZz
ZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJTEVfQVNT
RVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJv
cGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRz
LgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7
IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAgIHZvaWQg
cHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwg
SlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRh
LCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVk
KCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQor
ICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0
VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9u
Rm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAgdm9pZCBy
ZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9yYWdlKEpT
R2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgICAgIGJv
b2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBi
b29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdldCgpCi0g
ICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVydHlTdG9y
YWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwotICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQg
c2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0
dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93T3V0
T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJv
cGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0
eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3Ry
dWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJ
Zk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkKiBh
ZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZPdXRPZkxp
bmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3Rv
cmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgp
OwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocHJv
dG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3Rv
dHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0KCkpOwpA
QCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBK
U0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMg
eW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAg
ICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAtMzA1LDE5
ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAg
ICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAgICAgICAK
LSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlTdG9yYWdl
IHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0K
LSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAg
ICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3LDcgQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
IGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0
YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOworICAgICAg
ICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICszNzMsMTQg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBBU1NFUlQo
IXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0z
ODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rvcgog
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBz
dGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9C
SkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRv
dWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSk7
CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkg
PT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkp
OwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBAIC00MDAs
MTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAogICAg
ICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZXTsKICAg
ICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkgQEAgaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNpemVfdCBK
U09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5NiwxOCBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0dXJuIHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0KIAotaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2lu
bGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAgICBBU1NF
UlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8fCAoY2xh
c3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2b2lkKj4o
c3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlmICghc3Rv
cmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAgICBzZXRT
dHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9yYWdlLnNl
dChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpA
QCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1
ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgSlNP
YmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2JqZWN0OjpK
U09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVydHlTdG9y
YWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9mTGluZVN0
b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEsNiBAQCBp
bmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJuIGNyZWF0
ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6
aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0g
JkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1
Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQocHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcmV0
dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCk7
Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZv
KSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGluZm8pOwpA
QCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFzdEdldE93
blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1
cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAgICAgICAg
ICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAg
aWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAt
Njc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
ICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0
aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlv
bik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAg
ICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIg
aXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhl
biBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYg
KHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAtNzAwLDEz
ICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAg
ICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdl
ID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdy
b3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAg
ICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7Cisg
ICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisg
ICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRO
ZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3BlcnR5U3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAgIHNldE91
dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogCi0g
ICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChv
ZmZzZXQgPCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU9mZnNldD4oc3RydWN0dXJlKCktPnRvdGFsU3Rv
cmFnZUNhcGFjaXR5KCkpKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBj
YWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC03MTQsMTUgKzcz
MSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1
cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0g
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2Ug
PSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgbmV3U3RvcmFn
ZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotCi0gICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7IAorICAg
ICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxE
YXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisK
KyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8
IHN0YXRpY19jYXN0PFByb3BlcnR5T2Zmc2V0PihzdHJ1Y3R1cmUtPnRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zm
c2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRp
b25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAg
ICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0
LDcgKzc1Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAg
ICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwot
ICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVu
dEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzY4LDcgKzc4Niw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU9m
ZnNldD4oc3RydWN0dXJlLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKSk7CiAgICAgc2V0U3RydWN0
dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAt
NzgxLDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KAogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3Jh
Z2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFj
aXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkg
PD0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQo
b2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAK
LSAgICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0
dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ug
bmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9s
ZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAg
IHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUp
OworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uo
CisgICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3Rv
cmFnZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVj
dHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFs
bG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUo
KS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7
CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQog
ewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBB
Y2Nlc3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9y
YWdlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgp
KQotICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dl
c3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVj
dHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9w
ZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFBy
b3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0
b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0
T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1LDYg
QEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2VsbCgp
LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rl
cjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYgKzkz
OSwzMiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAgcmV0
dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUg
eW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoKKy8v
IEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdl
IHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91
dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zm
c2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zm
c2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0
KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0
dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsK
KyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxp
bmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICBy
ZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVT
dG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVtQ2Fj
aGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1lcmFi
bGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFy
eSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnByb3Bl
cnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1
cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwotICAg
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFt
ZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihl
eGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJlKCkt
PmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsMTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVj
U3RhdGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0
eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVh
YmxlU2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJv
cGVydHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgCkBA
IC02MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wgZ2V0
T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6
ZV90IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChpID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBtX29m
ZnNldEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04OCwx
MiArODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJh
eURhdGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVj
dCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlO
YW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnBy
b3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFt
ZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVj
dC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1
aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5n
c1NpemU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAgT3du
QXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1p
dGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkp
IHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAg
ICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcg
QEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2VycwogCiB2b2lkIGluaXRp
YWxpemVPcHRpb25zKCkKIHsKLSAgICBTRVQodXNlSklULCB0cnVlKTsKKyAgICBTRVQodXNlSklU
LCBmYWxzZSk7CiAgICAgCiAgICAgU0VUKHNob3dEaXNhc3NlbWJseSwgZmFsc2UpOwogICAgIFNF
VChzaG93REZHRGlzYXNzZW1ibHksIGZhbHNlKTsgLy8gREZHIGRpc2Fzc2VtYmx5IGlzIHNob3du
IGlmIHNob3dEaXNhc3NlbWJseSB8fCBzaG93REZHRGlzYXNzZW1ibHkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAko
cmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gK
IAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTcy
LDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAK
IHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0gICAgdW5z
aWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7CiAKLSAg
ICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkK
ICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwg
YXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc0LDggKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlZCB0byBtYWludGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVudHJpZXMgaW4gdGhlIHByb3Bl
cnR5IHN0b3JhZ2UuCiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBo
YXNEZWxldGVkT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAg
IHZvaWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIFByb3BlcnR5T2Zm
c2V0IGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KTsKKyAgICAKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXh0T2Zmc2V0KEpT
VHlwZSB0eXBlKTsKIAogICAgIC8vIENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0
aGUgY29weSBoYXMgYXQgbGVhc3QgdGhlIGNhcGFjaXR5IHByb3ZpZGVkLgogICAgIFBhc3NPd25Q
dHI8UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNp
Z25lZCBuZXdDYXBhY2l0eSk7CkBAIC0yMzAsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCogbV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAgIHVuc2lnbmVkIG1f
ZGVsZXRlZENvdW50OwotICAgIE93blB0cjwgVmVjdG9yPHVuc2lnbmVkPiA+IG1fZGVsZXRlZE9m
ZnNldHM7CisgICAgT3duUHRyPCBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+ID4gbV9kZWxldGVkT2Zm
c2V0czsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNaW5pbXVtVGFibGVTaXplID0gMTY7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7CkBAIC0yNjQs
OSArMjY3LDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAg
IH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rv
cjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRz
LmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMg
PSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZz
ZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNp
Z25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9
IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRz
KSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0
YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVy
dHlUYWJsZSYgb3RoZXIpCkBAIC0yODgsOSArMjkxLDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6
OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9m
ZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMg
PSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwog
ICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0g
YWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAg
ICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZz
ZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjp+
UHJvcGVydHlUYWJsZSgpCkBAIC00NjksMjAgKzQ3MiwzMSBAQCBpbmxpbmUgYm9vbCBQcm9wZXJ0
eVRhYmxlOjpoYXNEZWxldGVkT2ZmCiAgICAgcmV0dXJuIG1fZGVsZXRlZE9mZnNldHMgJiYgIW1f
ZGVsZXRlZE9mZnNldHMtPmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5
VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5
VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZGVs
ZXRlZE9mZnNldHMtPmxhc3QoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0
ZWRPZmZzZXRzLT5sYXN0KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwog
ICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERl
bGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KQoraW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6
YWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2Rl
bGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZl
Y3Rvcjx1bnNpZ25lZD4pOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3
IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4pOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChv
ZmZzZXQpOwogfQogCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9m
ZnNldChKU1R5cGUgdHlwZSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQorICAgICAg
ICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIAorICAgIGlmICh0eXBlID09IEZpbmFs
T2JqZWN0VHlwZSkKKyAgICAgICAgcmV0dXJuIHNpemUoKTsKKyAgICAKKyAgICByZXR1cm4gc2l6
ZSgpICsgZmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKIGlubGluZSBQYXNzT3duUHRyPFByb3Bl
cnR5VGFibGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQobmV3Q2Fw
YWNpdHkgPj0gbV9rZXlDb3VudCk7CkBAIC00OTksNyArNTEzLDcgQEAgaW5saW5lIHNpemVfdCBQ
cm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcgogewogICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2Yo
UHJvcGVydHlUYWJsZSkgKyBkYXRhU2l6ZSgpOwogICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQot
ICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2Yo
dW5zaWduZWQpKTsKKyAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0
eSgpICogc2l6ZW9mKFByb3BlcnR5T2Zmc2V0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9m
ZnNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlPZmZzZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU9mZnNl
dF9oCisjZGVmaW5lIFByb3BlcnR5T2Zmc2V0X2gKKworI2luY2x1ZGUgIkpTVHlwZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQor
I2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQg
UHJvcGVydHlPZmZzZXQ7CisKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zm
c2V0ID0gLTE7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFj
aXR5ID0gSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZz
ZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKKy8vIERl
Y2xhcmUgYWxsIG9mIHRoZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IHRlbmQgdG8gZG8gZm9yd2Fy
ZCBjYWxscy4KK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7
CitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0
eXBlKTsKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7
CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlw
ZSB0eXBlKTsKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KTsKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7Citp
bmxpbmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5s
aW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsK
K2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCk7CitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxh
c3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZT
bG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSk7Citp
bmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgSlNUeXBlIHR5cGUpOworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVy
dHlPZmZzZXRGb3IoSlNUeXBlIHR5cGUpOworCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgQVNT
RVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgY2hlY2tPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFS
QU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNTRVJUKG9mZnNldCA+
PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQKKyAg
ICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAgICAgfHwgaXNPdXRP
ZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIEFT
U0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zm
c2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9
CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0IDwgaW5s
aW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBy
ZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0
SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsKKyAgICBy
ZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsK
KyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNl
dCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVz
cGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc0lubGlu
ZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9m
ZnNldCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworfQor
CitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChv
ZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVf
dCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlw
ZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUg
PT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1
cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5s
aW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7Cisg
ICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0
KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNl
dCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9y
KEpTVHlwZSB0eXBlKQoreworICAgIHJldHVybiBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxp
ZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJv
cGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNs
dWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQ
cm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAg
ICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5
cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6
ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgp
KTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZh
bHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJh
c2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFM
VUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0
dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7
CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIw
Niw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8g
Q2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0
eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRh
dGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNl
IHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNl
dCA9IDA7CisgICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAg
ICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIz
Miw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwog
ICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5
VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0
KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHko
SlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAg
ICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJh
c2U7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAg
ICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAg
ICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RN
b2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
IT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3Qgewor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAg
ICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAg
ICAgICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAg
IHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAg
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsOCArMTU2LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwg
bV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJ
bml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBl
SW5mby5pc0ZpbmFsT2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0
eSA6IDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNp
dHkoMCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlL
aW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZh
bHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDgg
KzE3OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAs
IG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0lu
Zm8oJnNfaW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRX
YXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zm
c2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZz
ZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlL
aW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJl
OjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFs
RGF0YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0lu
Zm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShw
cmV2aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zm
c2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBh
Y2l0eSkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlL
aW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMt
Pm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0
cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
Pm1fcHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUt
Pm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAg
ICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNv
cHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1f
dHlwZUluZm8udHlwZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0y
NDcsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgog
ICAgIH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0
eU1hcChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKIAogICAgIGZv
ciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAg
ICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2
b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxp
bmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFj
aXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBj
dXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJl
dHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVj
dHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93
T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBu
ZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7Cisg
ICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9v
dXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1By
b3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1
Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1Zh
bHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAt
Mjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQK
ICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNp
dGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNp
ZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmlj
VmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJh
bnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChl
eGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fdHlwZUluZm8udHlwZSgp
KTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAg
ICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwog
fQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6
ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Bl
Y2lmaWMgZnVuY3Rpb24sIHdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlz
CiAgICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBu
YW1lIGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAgLTMyNyw4ICszMjcsOCBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlv
biA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zm
c2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAodHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpOworICAgICAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlv
bi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRP
ZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAgICAg
CkBAIC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0CiAgICAgfQogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1
ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwot
ICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgp
ID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgdHJhbnNpdGlvbi0+
Z3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9m
ZnNldDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0
cmFuc2l0aW9uKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3Qm
IG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQo
IXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKQEAgLTU0OCwxOCArNTQ4
LDE5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKIAogICAgICAg
ICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOwogICAgICAg
ICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291bnQpOwotCisgICAgICAgIAogICAg
ICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQg
PSBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgUHJv
cGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAg
ICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5i
ZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsKICAgICAgICAgICAgIHZhbHVlc1tp
XSA9IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9mZnNldCk7CiAgICAgICAgICAgICAv
LyBVcGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUgbmV3IHByb3BlcnR5IG9mZnNldHMK
LSAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAgICAgICAgICBpdGVyLT5vZmZzZXQg
PSBpICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENvcHkg
dGhlIG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAg
ICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ld
KTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGZpcnN0
T2Zmc2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmNsZWFy
RGVsZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXpl
X3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDEz
ICs1ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAg
IAogICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBp
ZiAocHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAg
ICAgICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIGlmIChvdXRPZkxpbmVTaXplKCkgPiBvdXRPZkxp
bmVDYXBhY2l0eSgpKQorICAgICAgICBncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICByZXR1
cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VS
VCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElm
TmVjZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxEYXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVf
dCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAg
IHJldHVybiByZW1vdmUocHJvcGVydHlOYW1lKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigp
CkBAIC02MzksMjAgKzYzOSwyMCBAQCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVy
ZTo6Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVy
dHlUYWJsZUZvclBpbm5pbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93
bmVyKQogewotICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVy
dHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVy
dHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVy
biBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRh
LCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKSk7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1Zh
bHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5
KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4g
V1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9w
ZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUu
dWlkKCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZv
dW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBl
bnRyeS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFs
dWUuZ2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFs
bEZ1bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAK
LXNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmlj
VmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNT
RVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NF
UlQoIWlzVmFsaWRPZmZzZXQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsKIAogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAt
Njk4LDEyICs2OTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xv
CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKCk7
CiAKLSAgICB1bnNpZ25lZCBuZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5o
YXNEZWxldGVkT2Zmc2V0KCkpCi0gICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+
Z2V0RGVsZXRlZE9mZnNldCgpOwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9w
ZXJ0eVRhYmxlLT5zaXplKCk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gbV9wcm9w
ZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1fcHJvcGVy
dHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdP
ZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDcgKzcwNiw3IEBA
IHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3
T2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC03MjQsNyArNzE5
LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcgogICAgIGlmICgh
cG9zaXRpb24uZmlyc3QpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHNpemVfdCBv
ZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92
ZShwb3NpdGlvbik7CiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNl
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBv
ZmZzZXQpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFu
Z2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUg
cHJvdG90eXBlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKQEAgLTEwMywzMiArMTAzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5z
aWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgICAgIGJv
b2wgZGlkVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQotICAg
ICAgICBib29sIHB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgYm9vbCBwdXRX
aWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAg
ICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29mZnNldCArIDEpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID49IGN1cnJlbnRTaXplKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNp
emUgPT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50U2l6ZSA9IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJy
ZW50U2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGlu
ZUNhcGFjaXR5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFT
U0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVy
dHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0
eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAg
ICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSBwcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0g
bV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlU
YWJsZS0+c2l6ZSgpID09IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNp
emUoKTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRP
ZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGlj
dGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJl
IHVzZWQgd2l0aCBjYXV0aW9uLiAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBh
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6
ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgYWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5
T2Zmc2V0IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJv
cGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBl
LnNldChnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9u
ZURpY3Rpb25hcnlLaW5kOyB9CkBAIC0xNDksMTggKzE0OSwxMDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCi0gICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0
KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsK
KyAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgpOworICAgICAgICB9CiAgICAgICAg
IGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRv
RmluZCk7CiAKLSAgICAgICAgdm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAg
ICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdCB7IEFTU0VSVChz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5OyB9Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBj
b25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVy
biAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6
ZV90IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpOworICAgICAgICB2b2lkIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwor
ICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAg
ICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVj
dFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJl
dHVybiB0b3RhbFNpemUgLSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9v
ZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93
bk5vbkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1f
dHlwZUluZm8udHlwZSgpICE9IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9w
cm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnBy
b3BlcnR5U3RvcmFnZVNpemUoKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAg
IHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7Cisg
ICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSB0aGlzLT5pbmxp
bmVDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVDYXBh
Y2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRvdGFsU2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsK
KyAgICAgICAgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RU
eXBlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lU2l6ZUZvcktub3duRmluYWxP
YmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50
eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdDsK
KyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAxOworICAgICAgICAgICAg
aWYgKHJlc3VsdCA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qo
KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAg
ICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlw
ZUluZm8udHlwZSgpKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VD
YXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxp
bmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBmaXJzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IHNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAg
ICAgc2l6ZSArPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNpemUgLSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0Owor
ICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBj
b25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlP
ZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0
ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
czsgfQogICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsyNjgsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJv
cGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVy
dHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5
KCk7CisgICAgICAgICAgICByZXR1cm4gIWlzVmFsaWRPZmZzZXQobV9vZmZzZXQpOworICAgICAg
ICB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5
RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNh
YmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hD
b3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQpAQCAtMjczLDggKzM2OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIERpY3Rpb25hcnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNW
YWx1ZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoUHJvcGVydHlOYW1l
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwogCiAgICAg
ICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAg
ICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0zMDEsNyArMzk3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGludCB0cmFuc2l0aW9uQ291bnQoKSBjb25zdAogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBTaW5jZSB0aGUgbnVtYmVyIG9mIHRyYW5zaXRpb25zIGlzIGFsd2F5cyB0
aGUgc2FtZSBhcyBtX29mZnNldCwgd2Uga2VlcCB0aGUgc2l6ZSBvZiBTdHJ1Y3R1cmUgZG93biBi
eSBub3Qgc3RvcmluZyBib3RoLgotICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG5vT2Zm
c2V0ID8gMCA6IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBpc1ZhbGlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQ
cm90b3R5cGVDaGFpbikgY29uc3Q7CkBAIC0zMTAsOCArNDA2LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFRyYW5zaXRpb25MZW5ndGggPSA2NDsK
IAotICAgICAgICBzdGF0aWMgY29uc3QgaW50IG5vT2Zmc2V0ID0gLTE7Ci0KICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7CiAK
ICAgICAgICAgVHlwZUluZm8gbV90eXBlSW5mbzsKQEAgLTMzNiwxMCArNDMwLDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgbXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0
IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CiAKLSAgICAgICAgdWludDMyX3QgbV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgdWludDMyX3QgbV9vdXRPZkxpbmVDYXBhY2l0eTsK
IAogICAgICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBhY2NvdW50IGZvciBhbm9ueW1vdXMgc2xv
dHMKLSAgICAgICAgaW50IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKIAogICAgICAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKICAgICAgICAgYm9v
bCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZSA6IDE7CkBAIC0zNTMsMjYgKzQ0NywyNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAg
ICAgfTsKIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIGlubGluZSBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNs
YXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAg
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZz
ZXQ7CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUt
PmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8g
ZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+
b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVj
dHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkK
KyAgICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVy
biBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9w
cm9wZXJ0eVRhYmxlLT5maW5kV2l0aFN0cmluZyhuYW1lLmltcGwoKSkuZmlyc3Q7Ci0gICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJu
IGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogICAgIAogICAg
IGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150546</attachid>
            <date>2012-07-02 23:49:18 -0700</date>
            <delta_ts>2012-07-03 15:34:23 -0700</delta_ts>
            <desc>I proved it correct</desc>
            <filename>overflowstorage_patch_11.diff</filename>
            <type>text/plain</type>
            <size>222595</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NiBA
QAorMjAxMi0wNy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhM
b2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhB
ZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6
CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6
cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRM
b2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAg
ICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29k
ZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMp
OgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3Bl
cnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAg
ICAgIChKU0M6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5
VG9TdHViSW5mbyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm86OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNo
R2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlk
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAg
ICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVh
c20veDg2LnJiOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
cm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRE
aXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpoYXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0
b3JhZ2VVbnNhZmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9m
ZnNldEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
Tm9uRmluYWxPYmplY3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZp
bmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0ZpbmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRP
dXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjppbmRleFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFBy
b3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0
eU1hcEVudHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
Z2V0RGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJ
bmxpbmVPZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAg
IChKU0M6Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
bmV4dFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNl
dEZvcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6
OnNldFZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAg
ICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVy
dHlTbG90OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlT
bG90OjpzZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2Fj
aGVkT2Zmc2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAg
IChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25O
b25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppbmxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0Vt
cHR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIwMTItMDctMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgT1NSIGV4aXQgdmFsdWUgcmVjb3ZlcmllcyBz
aG91bGQgYmUgY29tcHV0ZWQgbGF6aWx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2Miw2ICs1NjIsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwg
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBsYWJlbCgp
OworICAgIH0KICNlbmRpZgogICAgIAogICAgIExhYmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs2Nzcs
MTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJl
YWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKKyAg
ICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9j
YXRpb24oKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0
aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDI0IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0
aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZXBs
YWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
KyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNB
Y3RpdmUoQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwsIGJvb2wgaXNBY3RpdmUpCisgICAgeworICAg
ICAgICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAgICByZXBsYWNlV2l0aExvYWQobGFiZWwpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihs
YWJlbCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiA1OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAg
ICAgICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRy
Kys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9W
X0d2RXY6CisgICAgICAgICAgICAqcHRyID0gT1BfTEVBOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJl
bCBjYWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIx
NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRC
eUlkT3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdl
dF9ieV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVh
azsKICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
c2VsZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzMyw2ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46
CkBAIC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfcmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwogICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAg
ICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBA
IC0yMDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAg
ICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgp
KQogICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBmYWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwg
U3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICAg
ICAgCiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAogICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAt
MTU2LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkp
IHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAg
ICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5v
dEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xNzYsMTAgKzE3NiwxMCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXNJZ25vcmVkOwogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAg
ICAgICAgICAgc2l6ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAg
ICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9
PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkg
ewogICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0
cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYg
KGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIz
LDExICsyMjMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29m
ZnNldCA9PSBub3RGb3VuZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQu
bV9vZmZzZXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQu
bV9vZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1f
b2Zmc2V0KSkgewogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAg
ICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFp
bi5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIEdldEJ5SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2lu
Y2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5j
bHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAg
ICBHZXRCeUlkU3RhdHVzKCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAg
ICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNl
dCkKICAgICB7CiAgICAgfQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRl
IHN0YXRlLCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQgPSBTdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBK
U1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFp
biA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0
dXJlKj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0
YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBt
X2NoYWluKGNoYWluKQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0
dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQog
ICAgIGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2No
YWluOyB9IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNz
LgogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNW
YWx1ZTsgfSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1
ZS4KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAog
ICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0K
ICAgICAKQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1
Y3R1cmVTZXQ7CiAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBt
X3NwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0
IG1fb2Zmc2V0OwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw2ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93
aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhv
cF9yZXNvbHZlX3dpdGhfdGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAg
ICAgIG1hY3JvKG9wX2dldF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisg
ICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHBy
b2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lk
X2NoYWluLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAg
ICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0g
ICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xv
YmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RG
b3VuZCk7CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9i
eV9pZAorICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAg
ICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAw
LCAwLCBvZmZzZXQpOwogICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdAotICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAg
ICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVj
dGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUp
OwogICAgIEFTU0VSVChjaGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVj
dHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAo
b2Zmc2V0ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
bmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwor
ICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSwgY2hhaW4sIG9mZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQo
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxh
Y2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7
CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAg
ICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdl
dCgpLAogICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBh
Y2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRC
eUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51
LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAog
ICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAg
ICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAg
ICAgIFNpbXBsZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAg
ICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAg
ICAgIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
VGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8g
RU5BQkxFKEpJVCkKLSAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5
SWRTdGF0dXNfaAogI2RlZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAg
ICAgICAgLCBtX25ld1N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkK
LSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAg
IHNpemVfdCBvZmZzZXQpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAg
OiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkK
ICAgICAgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9z
dGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NF
UlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAg
ICAgICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVy
ZUNoYWluKTsKLSAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9z
dGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAg
ICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Ns
b3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7
IH0KICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3Ry
dWN0dXJlOyB9CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRl
bnRpZmllciYpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1f
b2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0
dXJlQ2hhaW4qIG1fc3RydWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFBy
b3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2
LDkgQEAgc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cgogewogICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2stPmdsb2JhbERhdGEoKSwg
aWRlbnRpZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChv
ZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAg
ICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAgICAgcmV0dXJuIFJlc29s
dmVHbG9iYWxTdGF0dXMoUmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxlLCBzdHJ1Y3R1cmUsIG9m
ZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTYzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2JhbFN0YXR1
c19oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAg
ICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNl
dCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBj
bGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2lu
Z0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNl
dCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3Ry
dWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBz
Y3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAg
ICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAg
ICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50
MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFD
aGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
c3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1
Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxv
YWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
ZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxG
dW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
ICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAog
ICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAgIGNvbnN0IEdldEJ5SWRT
dGF0dXMmKTsKQEAgLTE2MzAsMjUgKzE2MzAsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ29uc3RhbnRJbnRlcgogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeU9mZnNl
dCgKICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICBib29sIHVz
ZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZzZXQpCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQogewogICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgc2l6ZV90IG9mZnNldE9m
ZnNldDsKLSAgICBpZiAodXNlSW5saW5lU3RvcmFnZSkgeworICAgIGlmIChpc0lubGluZU9mZnNl
dChvZmZzZXQpKQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICBBU1NF
UlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAg
ICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KTsKLSAgICB9IGVsc2UgeworICAgIGVsc2UKICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRk
VG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICBvZmZzZXRPZmZzZXQg
PSAwOwotICAgIH0KICAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAogICAgICAgICBhZGRUb0dy
YXBoKAogICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAogICAgICAgICAgICAgcHJvcGVy
dHlTdG9yYWdlKSk7CiAgICAgICAgIAogICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nl
c3NEYXRhOwotICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IG9mZnNldCArIG9mZnNldE9m
ZnNldDsKKyAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNl
KG9mZnNldCk7CiAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50
aWZpZXJOdW1iZXI7CiAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9y
YWdlQWNjZXNzRGF0YSk7CiB9CkBAIC0xNjc3LDcgKzE2NzIsNiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgoQ2hl
Y2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnZXRCeUlkU3RhdHVz
LnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOwogICAgIAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFn
ZTsKICAgICBpZiAoIWdldEJ5SWRTdGF0dXMuY2hhaW4oKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
U3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQo
KS5zaW5nbGV0b25TdHJ1Y3R1cmUoKTsKICAgICAgICAgSlNPYmplY3QqIGN1cnJlbnRPYmplY3Qg
PSAwOwpAQCAtMTY4Niw5ICsxNjgwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKICAgICAgICAgICAgIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLmNoYWlu
KClbaV07CiAgICAgICAgICAgICBiYXNlID0gYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKGN1
cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIHVzZUlu
bGluZVN0b3JhZ2UgPSBjdXJyZW50U3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpOwot
ICAgIH0gZWxzZQotICAgICAgICB1c2VJbmxpbmVTdG9yYWdlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1
Y3R1cmVTZXQoKS5hbGxBcmVVc2luZ0lubGluZVByb3BlcnR5U3RvcmFnZSgpOworICAgIH0KICAg
ICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBidWdzIGxpa2UgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3ZSBuZWVkIHRvCiAgICAgLy8gZW5zdXJlIHRoYXQg
dGhlIGJhc2Ugb2YgdGhlIG9yaWdpbmFsIGdldF9ieV9pZCBpcyBrZXB0IGFsaXZlIHVudGlsIHdl
J3JlIGRvbmUgd2l0aApAQCAtMTcwNyw4ICsxNjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICB9CiAgICAgCiAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCi0gICAg
ICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdXNlSW5saW5lU3RvcmFnZSwKLSAgICAgICAgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7Cisg
ICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnByZXBhcmVUb1BhcnNlQmxvY2soKQpAQCAtMjI1OSwyNSArMjI1MCwyMCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmICghaGFzRXhpdFNpdGUgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVJlcGxhY2UoKSkgewog
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwot
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgTm9k
ZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1
cy5vbGRTdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3Jh
cGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0
T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkp
LCBwcm9wZXJ0eVN0b3JhZ2UsIGJhc2UsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAg
ICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgp
ICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNl
dCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAg
ICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVu
ZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNFeGl0U2l0
ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlVHJhbnNp
dGlvbigpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0
dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gcHV0QnlJZFN0YXR1cy5uZXdTdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICAg
ICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09
IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkKICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlQ2hhaW5Jc1N0aWxsVmFsaWQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLApAQCAtMjMwOCwxNiArMjI5NCwxMSBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkpKSksCiAgICAgICAgICAg
ICAgICAgICAgIGJhc2UpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNpemVf
dCBvZmZzZXRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFn
ZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2Jq
ZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdl
LCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKLSAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICAg
ICAgUHV0QnlPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fc3Rv
cmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwKQEAgLTIzMjYsNyArMjMwNyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgdmFsdWUp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0
b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNl
dCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShwdXRCeUlk
U3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVu
dGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC0yNzM4LDggKzI3MTksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0aW9uLCBnbG9iYWxPYmplY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMuc3RydWN0dXJl
KCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0
dXMub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwg
c3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlTnVtYmVyKys7IC8vIFNraXAgb3ZlciB0aGUg
dW51c2VkIGdsb2JhbCByZXNvbHZlIGluZm8uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Miw2ICsxNzIsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAj
ZW5kaWYKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkp
OwogICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0
d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9w
cm9wZXJ0eUFjY2Vzc2VzW2ldLm1fZG9uZSkpOworICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1N0b3JhZ2VMb2FkID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5M
b2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3By
b3BlcnR5U3RvcmFnZUxvYWQpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuYmFzZUdQUiA9IG1f
cHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2Jhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgaW5mby5wYXRjaC5kZmcudmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1
ZUdQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBAIHN0cnVjdCBQcm9wZXJ0
eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJh
dG9yKiBzbG93UGF0aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRv
bmUsCkBAIC0xNDgsNiArMTQ5LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9w
ZXJ5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0
IHRhZ0xvYWRPclN0b3JlLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFj
dCBwYXlsb2FkTG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0
aEdlbmVyYXRvciwKQEAgLTE2MSw2ICsxNjMsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNv
cmQgewogICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICAsIG1fc3Ry
dWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoZWNrKHN0cnVj
dHVyZUNoZWNrKQorICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3Jh
Z2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICwgbV9sb2FkT3JTdG9yZShsb2Fk
T3JTdG9yZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xODIsNiArMTg1LDcgQEAgc3Ry
dWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJlQ2hlY2s7CisgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IG1fbG9hZE9yU3RvcmU7CiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRp
YyB2b2lkIGRmZ1JlcGF0Y2hDYWxsKENvZGVCbG9jayogY28KICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGRmZ1JlcGF0
Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG9mZnNldCwgY29uc3QgRnVu
Y3Rpb25QdHIgJnNsb3dQYXRoRnVuY3Rpb24sIGJvb2wgY29tcGFjdCkKK3N0YXRpYyB2b2lkIGRm
Z1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LCBjb25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQog
ewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01Miwx
OCArNTIsMTkgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZAogCiAg
ICAgLy8gUGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNo
ZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0
cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVP
ZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoY29tcGFjdCkKLSAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9h
ZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAg
ICBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUp
LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNW
YWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNp
emVvZihKU1ZhbHVlKSAqIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2Fk
T3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9y
U3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uo
b2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcgKzEwNiw3IEBAIHN0YXRpYyB2
b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBsaW5rUmVzdG9yZVNjcmF0Y2go
cGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJl
Q2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwog
fQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4s
IHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVM
b2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJl
bCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKK3N0YXRpYyB2b2lkIGdlbmVy
YXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBz
dWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsxNDAsMjMgQEAgc3RhdGljIHZv
aWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAgICBjdXJyU3RydWN0dXJlID0g
aXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3Qt
PmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIpOworICAgIGlmIChpc0lubGlu
ZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdHViSml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZFB0
cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSwgcmVzdWx0R1BSKTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCByZXN1bHRHUFIp
OworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAg
ICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZk91dE9mTGluZVN0b3Jh
Z2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0
R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Cisg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTM0OSwxMiArMzYwLDIwIEBAIHN0YXRp
YyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgIHx8IHNsb3Qu
Y2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKICAgICAgICAg
ICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6R2V0dGVy
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7Ci0gICAg
ICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSksIHNjcmF0Y2hHUFIpOwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CiAjZW5kaWYKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgc2NyYXRjaEdQUik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7
CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9m
ZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIHNj
cmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9u
Q2FsbEdldHRlcjsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zODUsMTMgKzQwNCwyMiBAQCBz
dGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICBoYW5k
bGVyQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOwogICAgICAgICAgICAgc3R1YkppdC5qdW1wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHRHUFIp
OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICBzdHViSml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAg
ICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZz
ZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAg
ICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BS
KTsKKyNlbmRpZgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVz
dWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hl
ZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShz
bG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAgICAgICAgICAgICBpc0Rp
cmVjdCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTU2Nyw3ICs1OTUsNyBAQCBzdGF0aWMgdm9pZCBl
bWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAg
ICAKLSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJO
ZWVkZWQgfHwgIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkpIHsKKyAgICBpZiAo
c2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgaXNP
dXRPZkxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CiAgICAgICAgIHNjcmF0Y2hH
UFIgPSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7
CiAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAgICAgc3R1YkppdC5w
dXNoKHNjcmF0Y2hHUFIpOwpAQCAtNTg2LDIwICs2MTQsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1
dFJlcGxhY2VTdHViKAogI2VuZGlmCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAo
c3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3Jl
UHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQor
ICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQu
c3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
Uiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC02
ODUsMjAgKzcxMywyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAKICAg
ICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNh
Y2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVU
YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnN0SW5PdXRPZkxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHVi
Sml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVv
ZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCkBAIC03NTIsNyArNzgwLDcg
QEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tpcCBvcHRp
bWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpAQCAtODE1LDcgKzg0Myw3IEBA
IHN0YXRpYyBib29sIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIHNraXAgb3B0aW1p
emluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYwotICAgICAgICAgICAgaWYgKG9s
ZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDYgKzUwNSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVs
UHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBz
dHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKKyAgICBK
SVRDb21waWxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0LmxhYmVsSWdub3Jp
bmdXYXRjaHBvaW50cygpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9h
ZFdpdGhQYXRjaCA9IG1faml0LmxvYWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CiAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExvYWRXaXRoUGF0Y2ggPSBtX2ppdC5s
b2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC01NDcsNyArNTQ4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2pp
dC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAg
ICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAor
ICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVj
aywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIHRhZ0xvYWRXaXRoUGF0Y2gsIHBh
eWxvYWRMb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAogICAgICAgICAg
ICAgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVz
dWx0VGFnR1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0UGF5bG9hZEdQ
UiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCkBAIC01NjIsNiArNTYzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVy
KGJhc2VQYXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVVc2UsIFdyaXRlQmFycmllckZvclBy
b3BlcnR5QWNjZXNzLCBzY3JhdGNoR1BSKTsKIAorICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21w
aWxlcjo6RGF0YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSk7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9
IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklU
Q29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwpAQCAtNTk0LDcgKzU5Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRk
UHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAg
ICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAg
ICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHBy
b3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29t
cGFjdCh0YWdTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpEYXRhTGFiZWxDb21wYWN0KHBheWxvYWRTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAg
ICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZVBh
eWxvYWRHUFIpLApAQCAtMzU0Myw3ICszNTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJl
c3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCw3ICs0OTQsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1
bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6TGFiZWwg
cHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwor
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21w
YWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCks
IHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1f
aml0LmxhYmVsKCk7CkBAIC01MTQsOCArNTE1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAg
ICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5n
ZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9h
ZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVD
YXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKICAgICAg
ICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAgICBzcGlsbE1v
ZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2Ug
OiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzMsNyArNTM0LDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVy
KGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nl
c3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQu
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgc3RvcmVXaXRoUGF0
Y2ggPSBtX2ppdC5zdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVHUFIsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIDApKTsKIAogICAgIEpJVENvbXBpbGVyOjpMYWJl
bCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgpOwpAQCAtNTYzLDcgKzU2NSwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAg
ICAgICAgIGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0KLSAgICBtX2ppdC5h
ZGRQcm9wZXJ0eUFjY2VzcyhQcm9wZXJ0eUFjY2Vzc1JlY29yZChjb2RlT3JpZ2luLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFj
dChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2Fm
ZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZUdQUiksIHNhZmVD
YXN0PGludDhfdD4oc2NyYXRjaEdQUikpKTsKKyAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygK
KyAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gu
bGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsCisgICAgICAgICAgICBzYWZlQ2Fz
dDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8
aW50OF90PihzY3JhdGNoR1BSKSkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
LnJlbGVhc2UoKSk7CiB9CiAKQEAgLTM1NjcsNyArMzU3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAK
LSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIHN0
b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMzg4Myw5ICszODg5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlc0RvbnRNYXRjaCA9IG1f
aml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CiAKICAgICAgICAgLy8gRmFzdCBjYXNlCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXNvbHZlSW5mb0dQUiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZv
LCBvZmZzZXQpKSwgcmVzb2x2ZUluZm9HUFIpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6
OlNjYWxlUHRyKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbmxp
bmUgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpMZXNzVGhhbiwg
cmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGhhdmVTdG9yYWdlID0gbV9qaXQuanVtcCgpOworICAgICAg
ICBpc0lubGluZS5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1t
MzIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFj
aXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BS
KTsKKyAgICAgICAgaGF2ZVN0b3JhZ2UubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklU
Q29tcGlsZXI6OlNjYWxlUHRyLCAtaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFs
dWUpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTgwLDggKzIxODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlci4K
LSAgICAgICAgbV9qaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9m
KEpTT2JqZWN0KSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0LnN0b3Jl
UHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgQ2xhc3NU
eXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKICAg
ICB9CiAKICAgICAvLyBJdCBpcyBhY2NlcHRhYmxlIHRvIGhhdmUgc3RydWN0dXJlIGJlIGVxdWFs
IHRvIHNjcmF0Y2gsIHNvIGxvbmcgYXMgeW91J3JlIGZpbmUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcg
KzMzMyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICAgICB9
CiAKICAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KGNlbGwpKSB7Ci0gICAgICAgIEpTT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOworICAgICAg
ICBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCks
IHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MTcsNyArMzcxNyw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAgICAgICAgIEpTVmFsdWUgZXhwZWN0ZWRTdWJzY3JpcHQgPSBjYWxsRnJhbWUtPnIoZXhw
ZWN0ZWQpLmpzVmFsdWUoKTsKICAgICAgICAgaW50IGluZGV4ID0gY2FsbEZyYW1lLT5yKGkpLmko
KSAtIDE7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0OwotICAgICAgICBpbnQgb2Zmc2V0ID0gMDsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gMDsKICAgICAgICAgaWYgKHN1YnNjcmlw
dCA9PSBleHBlY3RlZFN1YnNjcmlwdCAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgKGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkgPT0gaXQtPmNhY2hlZFN0cnVjdHVyZSgpKSAmJiBpdC0+
Z2V0T2Zmc2V0KGluZGV4LCBvZmZzZXQpKSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoZHN0KSA9IEpTVmFsdWUoYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0RGlyZWN0T2Zmc2V0
KG9mZnNldCkpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3Bu
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMTYzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQorICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4ICszMjAsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC01MzcsNiArNTQxLDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQ
YXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4pOwog
ICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKICAgICAg
ICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVDaGVjayA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVDaGVjaykpOworICAgICAgICBpbmZvLnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fz
c2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkBAIC01
NTAsNiArNTU1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQog
ICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2lu
TG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAg
aW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YocHV0U3RydWN0dXJlVG9Db21wYXJlKSk7CisgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVy
OjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCA9IE1h
Y3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0
aEJlZ2luOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIGdldFN0cnVjdHVy
ZVRvQ29tcGFyZTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgZ2V0U3Ry
dWN0dXJlQ2hlY2s7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3Jh
Z2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxDb21wYWN0IGdldERpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTE4NSwxNyArMTg2
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKIAotICAgICAgICBQcm9wZXJ0eVN0dWJD
b21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm8oCisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJHZXRCeUlkX1Qs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVn
aW4sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVj
dHVyZUNoZWNrLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHByb3BlcnR5U3Rv
cmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
ZGlzcGxhY2VtZW50TGFiZWwsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJl
bCwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVj
dHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hl
Y2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLCBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxLAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyLAogI2VuZGlmCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQogICAgICAgICAgICAg
OiBtX3R5cGUoR2V0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2luKQogICAgICAgICAg
ICAgLCBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJlVG9Db21wYXJlKQogICAgICAgICAg
ICAgLCBnZXRTdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKKyAgICAgICAgICAgICwgcHJv
cGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgICAgICAsIGdldERpc3BsYWNlbWVudExhYmVsKGRpc3BsYWNlbWVudExhYmVsKQog
I2Vsc2UKQEAgLTIwNiwxNSArMjE0LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oCisg
ICAgICAgICAgICBQcm9wZXJ0eVN0dWJQdXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsKQor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
CiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJl
bDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIpCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
MgogI2VuZGlmCisgICAgICAgICAgICApCiAgICAgICAgICAgICA6IG1fdHlwZShQdXRCeUlkKQog
ICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAs
IGhvdFBhdGhCZWdpbihob3RQYXRoQmVnaW4pCisgICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFn
ZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICAgICAgICAgICAgICwgcHV0U3RydWN0dXJlVG9D
b21wYXJlKHN0cnVjdHVyZVRvQ29tcGFyZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAg
ICAgLCBwdXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKQEAgLTI5NSw0MCAr
MzA5LDQwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIEpJVChnbG9iYWxE
YXRhLCBjb2RlQmxvY2spLnByaXZhdGVDb21waWxlKGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBl
ZmZvcnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQ
cm90byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZUdldEJ5SWRQcm90byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAg
ICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAg
ICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4Owog
ICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKHN0dWJJbmZvLCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgcmV0
dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRl
eCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAg
ICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChzdHViSW5mbywgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzLCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3Qs
IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwg
aW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5
dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQu
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1
cmVMaXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVu
dCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9Ci0gICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90
eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIGNoYWluLCBjb3VudCwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1l
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW4o
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNv
bXBpbGVHZXRCeUlkQ2hhaW4oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2sp
OwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihzdHViSW5m
bywgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJl
dHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MsIGJvb2wgZGlyZWN0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVC
bG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRl
Y29kZUluZGV4OwpAQCAtMzU4LDggKzM3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVT
dHViSW5mbyopOwogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoUHV0QnlJZChSZXBhdGNo
QnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hH
ZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpOwotICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayog
Y29kZWJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogICAgICAgICBzdGF0aWMgdm9pZCBw
YXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqIGNvZGVibG9jaywg
TWV0aG9kQ2FsbExpbmtJbmZvJiwgU3RydWN0dXJlU3R1YkluZm8mLCBKU09iamVjdCosIFN0cnVj
dHVyZSosIEpTT2JqZWN0KiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAt
Mzc3LDEyICszOTEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVMaW5rUGFzcygpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7
CiAgICAgICAgIEpJVENvZGUgcHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFy
aXR5Q2hlY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBT
dHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7
CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpb24oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlPiBwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhKU0ds
b2JhbERhdGEqLCBUcmFtcG9saW5lU3RydWN0dXJlKik7CiAgICAgICAgIExhYmVsIHByaXZhdGVD
b21waWxlQ1RJTmF0aXZlQ2FsbChKU0dsb2JhbERhdGEqLCBib29sIGlzQ29uc3RydWN0ID0gZmFs
c2UpOwpAQCAtNDY4LDEwICs0ODIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNs
b3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sg
PSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNp
emVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
SlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBh
eWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJ
RCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2
b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lz
dGVySUQgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQs
IHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVl
UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAogICAgICAgICAvLyBBcml0
aG1ldGljIG9wY29kZSBoZWxwZXJzCiAgICAgICAgIHZvaWQgZW1pdEFkZDMyQ29uc3RhbnQodW5z
aWduZWQgZHN0LCB1bnNpZ25lZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0VHlwZSBvcFR5
cGUpOwpAQCAtNTQ3LDEwICs1NjEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKik7CiAgICAg
ICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VW
UmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09i
amVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQg
b2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwotICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVk
T2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDI5LDExICs0MjksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBib29sIGRlc3Ry
CiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0
OjpvZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKIAogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgotICAgIGlmIChDbGFzc1R5cGU6Omhhc0lubGlu
ZVN0b3JhZ2UoKSkgewotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVj
dCkpLCByZXN1bHQsIHN0b3JhZ2VQdHIpOwotICAgICAgICBzdG9yZVB0cihzdG9yYWdlUHRyLCBB
ZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVz
dWx0LCBDbGFzc1R5cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKKyAgICBzdG9yZVB0
cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgSklUOjplbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklE
IHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsOSArNzAxLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAgICAgLy8gTG9h
ZCBjYWNoZWQgcHJvcGVydHkKICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBh
bHdheXMgdXNlcyBleHRlcm5hbCBzdG9yYWdlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSkpLCByZWdU
MCk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNv
bHZlSW5mbywgb2Zmc2V0KSksIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMCwg
cmVnVDEsIFNjYWxlUHRyKSwgcmVnVDApOworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVn
VDAsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzMsNyArMzMzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCgpCiAgICAg
UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihw
YXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAgIGFkZFNsb3dDYXNlKHN0cnVjdHVy
ZUNoZWNrKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDIpOworICAgIExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAg
ICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSA9IGxvYWRQdHJXaXRoQ29tcGFj
dEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QyLCBwYXRjaEdldEJ5SWREZWZhdWx0T2Zm
c2V0KSwgcmVnVDApOyAvLyBwYXlsb2FkCiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1l
bnRMYWJlbDIgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhy
ZWdUMiwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QxKTsgLy8gdGFnCiAgICAgCkBA
IC0zNDEsNyArMzQyLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCgpCiAgICAg
CiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VHZXRCeUlkSG90UGF0aCk7
CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwg
aG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBkaXNwbGFj
ZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7CisgICAgbV9wcm9w
ZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25J
bmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwg
c3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwg
ZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3VsdCkpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0zOTks
NyArNDAwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAg
IERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogICAgIAotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZWdUMSk7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNl
bWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMiwgQWRkcmVz
cyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2FkCiAgICAgRGF0
YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBh
dGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8v
IHRhZwogICAgIApAQCAtNDA3LDcgKzQwOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyLCByZWdU
MSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5
QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2Rl
T2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFi
ZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRp
b25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0
QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFi
ZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKQEAgLTQzMCwzMCArNDMyLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQo
SW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVy
dHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlUHV0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJ
RCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAg
aW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNP
YmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBlbWl0U3RvcmUo
b2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAoaXNPdXRPZkxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OzpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIGVtaXRTdG9y
ZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2YWx1ZVBheWxv
YWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3Bl
cnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3Rl
cklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGls
ZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBS
ZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsK
LSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGluZU9mZnNldChj
YWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2Fj
aGVkT2Zmc2V0KSwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gcmVzdWx0UGF5bG9hZDsKICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdl
KCkpLCB0ZW1wKTsKLSAgICBlbWl0TG9hZChvZmZzZXQsIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9h
ZCwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQp
LCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOwogfQogCi12b2lkIEpJVDo6Y29tcGls
ZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJl
Z2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0
VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0
VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7Cisg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFz
ZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHRUYWcpOworICAgIGxvYWQzMihB
ZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNz
KHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBi
b29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVj
dCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMg
dGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0
aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJN
KQpAQCAtNTUzLDcgKzU2Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGluZShyZXR1cm5B
ZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUuY29kZSgpKSk7
CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6
cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zm
c2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZl
ciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01NjUsMTEgKzU3OCwxMiBAQCB2
b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvCiAKICAgICAvLyBQYXRjaCB0
aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNo
IHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJl
bDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkp
OyAvLyBwYXlsb2FkCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3Ry
dWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0
Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSk7IC8vIHBheWxvYWQKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
OyAvLyB0YWcKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Ym9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihj
b2RlQmxvY2spOwogICAgIApAQCAtNTgxLDggKzU5NSw5IEBAIHZvaWQgSklUOjpwYXRjaFB1dEJ5
SWRSZXBsYWNlKENvZGVCbG9jayoKIAogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUg
cHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBs
b29rIGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuc3Ry
dWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAvLyBwYXlsb2FkCi0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zm
c2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAg
ICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2gudS5wdXQucHJvcGVydHlTdG9y
YWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpOyAvLyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRB
cnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjQ0
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0
cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
YXRjaGVkT2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICAKQEAgLTcwMCw3ICs3MTUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RyCiB9CiAKIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgLy8gcmVn
VDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgSnVtcCBmYWlsdXJlQ2FzZSA9IGNoZWNrU3RydWN0dXJl
KHJlZ1QwLCBzdHJ1Y3R1cmUpOwpAQCAtNzYwLDcgKzc3NSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3Ry
dWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtODI5
LDcgKzg0NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QKICAg
ICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0
dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90
IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEFTU0VSVChjb3VudCk7CkBAIC05MDQs
NyArOTE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgog
ICAgIEFTU0VSVChjb3VudCk7CkBAIC05NzksOSArOTk0LDE0IEBAIHZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGUKIHsKICAgICBBU1NFUlQoc2l6ZW9mKEpTVmFsdWUpID09
IDgpOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9m
ZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0
LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJl
c3VsdFRhZyk7CisgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7Cisg
ICAgSnVtcCBkb25lID0ganVtcCgpOworICAgIGlzSW5saW5lLmxpbmsodGhpcyk7CisgICAgYWRk
UHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAg
IGRvbmUubGluayh0aGlzKTsKKyAgICBsb2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGlt
ZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxv
YWQpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0
eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEwMDYsNiArMTAyNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVj
dGkKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cmVnVDMsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLCBtX251bUNhY2hlYWJsZVNsb3RzKSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJl
Z1QzKTsKICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJl
Z1QzKTsgICAgCiAgICAgCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDggKzE1MywxNSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAKIHZvaWQgSklUOjpjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQg
b2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9h
ZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7Cisg
ICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBKdW1wIGlzSW5saW5l
ID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VD
YXBhY2l0eSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7Cisg
ICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpLCBiYXNlLCBzY3JhdGNoKTsKKyAgICBkb25lLmxpbmsodGhpcyk7
CisgICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgLWlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMzczLDE0ICszODAsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aChp
bnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRTbG93
Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJl
Z1QwKTsKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsID0gbG9hZFB0cldp
dGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDAsIHBhdGNoR2V0QnlJZERl
ZmF1bHRPZmZzZXQpLCByZWdUMCk7CiAKICAgICBMYWJlbCBwdXRSZXN1bHQodGhpcyk7CiAKICAg
ICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAot
ICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQ
YXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVu
dExhYmVsLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
LmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwg
bV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCwgcHV0UmVz
dWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKQEAgLTQ0MCwxNCArNDQ4LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0
cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsK
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFMYWJlbDMy
IGRpc3BsYWNlbWVudExhYmVsID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1Qx
LCBBZGRyZXNzKHJlZ1QyLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7CiAKICAgICBFTkRf
VU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogCiAgICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRl
cywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vz
c0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3Bl
cnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJl
VG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21w
aWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0
dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29t
cGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwpKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDcxLDI4ICs0
ODAsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogCiAvLyBD
b21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92
ZXJ3cml0ZSB0aGUKIC8vIHZhbHVlIGluIG9iamVjdFJlZy4KLXZvaWQgSklUOjpjb21waWxlUHV0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewot
ICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
YmFzZSk7Ci0gICAgc3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgb2Zmc2V0KSk7CisgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgc3RvcmVQdHIodmFs
dWUsIEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2l6
ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgc3RvcmVQdHIo
dmFsdWUsIEFkZHJlc3MoYmFzZSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKIH0KIAogLy8gQ29tcGlsZSBhIGxvYWQgZnJvbSBhbiBv
YmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6
OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFs
dWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKSksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0
KSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNl
dCkpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIo
QWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1
bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBK
SVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSwgcmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBjYWNoZWRPZmZzZXQgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihiYXNlLT5sb2NhdGlvbkZv
ck9mZnNldChjYWNoZWRPZmZzZXQpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1
bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHQp
OwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIEp1bXBMaXN0IGZh
aWx1cmVDYXNlczsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBT
dHJ1Y3R1cmUuCkBAIC01MjIsNyArNTQ0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpbwogI2VuZGlmCiAgICAgCiAgICAgLy8gZW1pdCBhIGNhbGwgb25seSBpZiBz
dG9yYWdlIHJlYWxsb2MgaXMgbmVlZGVkCi0gICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9j
ID0gb2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJl
YWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmICh3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jKSB7
CiAgICAgICAgIC8vIFRoaXMgdHJhbXBvbGluZSB3YXMgY2FsbGVkIHRvIGxpa2UgYSBKSVQgc3R1
YjsgYmVmb3JlIHdlIGNhbiBjYW4gY2FsbCBhZ2FpbiB3ZSBuZWVkIHRvCiAgICAgICAgIC8vIHJl
bW92ZSB0aGUgcmV0dXJuIGFkZHJlc3MgZnJvbSB0aGUgc3RhY2ssIHRvIHByZXZlbnQgdGhlIHN0
YWNrIGZyb20gYmVjb21pbmcgbWlzYWxpZ25lZC4KQEAgLTUzMiw3ICs1NTQsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgICAgIHN0dWJDYWxsLnNraXBB
cmd1bWVudCgpOyAvLyBiYXNlCiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyBp
ZGVudAogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gdmFsdWUKLSAgICAgICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVk
SW1tMzIob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSk7CiAgICAgICAgIHN0
dWJDYWxsLmNhbGwocmVnVDApOwogICAgICAgICBlbWl0R2V0SklUU3R1YkFyZygyLCByZWdUMSk7
CkBAIC01NzIsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFk
ZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsK
IH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpw
YXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTgwLDE0ICs2MDIsMTMgQEAgdm9pZCBK
SVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJs
eSBnbyB0byBjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8gYW55dGhp
bmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVy
VG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Nl
bGZfZmFpbCkpOwogCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9m
ZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0
byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJB
dE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJl
KSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNl
dExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCks
IGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAKLXZvaWQgSklUOjpwYXRj
aFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBhdGNo
UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTk1LDExICs2MTYs
MTAgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogICAgIC8vIFNo
b3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNu
J3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihkaXJlY3Qg
PyBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1dF9ieV9pZF9nZW5l
cmljKSk7CiAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0
OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxv
YWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBz
dHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRp
c3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0
cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZM
aW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3
ICs2NjMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9i
amVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2Nr
IGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0
aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxl
IG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3ICs3MzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1
bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9f
bGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1
cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVk
c1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAsNyArNzkwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2Nh
dGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMg
KGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVj
dHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBs
ZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04
MzksNyArODU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwo
c3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudElu
ZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcg
KzkzNCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJS
b3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxNjM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
ODYsMTMgKzE0ODYsMTYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXRf
YgogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
ICAgICBpbnQzMl90IG9sZFNpemUgPSBzdGFja0ZyYW1lLmFyZ3NbM10uaW50MzIoKTsKICAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHN0YWNrRnJhbWUuYXJnc1s0XS5zdHJ1Y3R1cmUoKTsK
LSAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCk7CisgICAgaW50MzJfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpOworICAgIAorICAgIEFTU0VSVChvbGRTaXplID49IDApOworICAgIEFTU0VSVChuZXdT
aXplID4gb2xkU2l6ZSk7CiAKICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAg
IEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEgPSAqc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwotICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBvbGRT
aXplLCBuZXdTaXplKTsKLSAgICBiYXNlLT5zZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
bmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFn
ZSA9IGJhc2UtPmdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1Np
emUpOworICAgIGJhc2UtPnNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFn
ZSwgbmV3U3RydWN0dXJlKTsKIAogICAgIHJldHVybiBiYXNlOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjE2
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
cHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0
dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk0MCw3ICs5NDYsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAmJiBiYXNl
Q2VsbCA9PSBzbG90LmJhc2UoKSkgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
PT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2Ug
Y2FsbApAQCAtOTUyLDcgKzk1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJl
LnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0
cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwyOCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAg
IHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bj
b2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CiAg
ICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwot
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtOTE5LDYgKzkxOSwxNyBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGRpc3BhdGNoKDMp
CiAKIAorbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwg
b2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQs
IElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
b3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAg
IGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5l
U3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5y
ZWFkeToKKyAgICBsb2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29i
amVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJv
cGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXpl
LCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAgIERl
c3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KQEAgLTkzMCw5ICs5NDEsNyBAQCBtYWNybyByZXNvbHZl
R2xvYmFsKHNpemUsIHNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CiAgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdwogICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDEsIDhdLCB0MgotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwg
dDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQogICAg
IGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMDk2
LDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQog
CiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5
X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4g
V2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYg
ZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNr
eSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0
UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8g
bW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2Rp
ZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hl
IHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGluZy1wb25naW5nIGlz
IGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGlu
dWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdl
IHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4g
ZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdl
dEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0g
ICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9m
aWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQorICAgICAgICAg
ICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAg
ICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAg
ICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkaSAz
MltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgCisgICAgICAgIC5vcEdldEJ5SWRTbG93Ogor
ICAgICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCiAKLS5vcEdldEJ5SWRTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNw
YXRjaCg5KQorX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9y
YWdlKQorCisKK19sbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CisgICAgZ2V0QnlJZCh3
aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6
CkBAIC0xMTMwLDY4ICsxMTUyLDk2IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoK
ICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9wdXRfYnlfaWQ6CittYWNybyBwdXRCeUlk
KGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQ
Q10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENd
LCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxv
YWRpIDIwW1BDXSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQy
KQotICAgIHdyaXRlQmFycmllcih0MCwgdDIpCi0gICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMs
IHQxXQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCi0gICAgZGlzcGF0Y2go
OSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAg
ICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAg
IGxvYWRpIDIwW1BDXSwgdDEKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQyLCBzY3JhdGNoLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihzY3JhdGNoLCB0MikK
KyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0
MV0KKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2Us
IHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCiAKIC5vcFB1
dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkK
ICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0
aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0
aW9uKGFkZGl0aW9uYWxDaGVja3MpCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFs
Q2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
IDEyW1BDXSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpIDIwW1BDXSwgdDEKLSAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQz
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKLSAgICB3cml0ZUJh
cnJpZXIodDEsIHQyKQotICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQotICAgIGxvYWRpIDI0
W1BDXSwgdDEKLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgc3RvcmVwIHQx
LCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVy
dHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9w
ZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3Jh
Z2UsIHQzCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQy
KQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICAgICAgICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W3QzXQorICAgICAgICAgICAgbG9hZGkgMjRbUENdLCB0MQorICAgICAgICAg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgICAgICAgICAgc3RvcmVwIHQxLCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAg
ZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3Jh
dGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUg
b2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKworICAgIGxvYWRwIDI4W1BDXSwg
c2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAg
ICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBh
c3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgYmllcSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25l
CisubG9vcDoKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0
Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFkZHAgNCwgc2NyYXRjaAorICAgIGJpbmVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxv
b3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xv
dykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdp
dGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1
cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1
Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3Rv
Ci0gICAgICAgIAotICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCi0gICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICAgICAg
ICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAg
IGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBO
dWxsVGFnLCAuZG9uZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAot
ICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1
Y3R1cmUKLSAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Ci0g
ICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKLSAg
ICAgICAgLmRvbmU6Ci0gICAgICAgIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1
cmVDaGFpbkNoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihz
dHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29w
X2dldF9ieV92YWw6CkBAIC0xMjYxLDkgKzEzMTEsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1l
OgogICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKICAgICBzdWJpIDEsIHQwCiAgICAgYmlhZXEg
dDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BH
ZXRCeVBuYW1lU2xvdwotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0s
IHQyCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9vZmZzZXRCYXNlW3QzXSwgdDAKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQw
LCB0MiwgdDEsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MSwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTc3
OCw2ICs3NzgsMTYgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBkaXNwYXRjaCgzKQogCiAK
K21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVj
dEFuZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3Jh
Z2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3Rv
cmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkK
Ky5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElu
bGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBs
b2FkcCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0
eU9mZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93
KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBE
ZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArNzk5LDcgQEAgbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQogICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQ
QywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAK
LSAgICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAg
dDIsIFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQw
CkBAIC05MzcsNyArOTQ2LDcgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAg
IGRpc3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0
UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8g
bW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2Rp
ZnkgdGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hl
IHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NTcsMzAgQEAg
X2xsaW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9h
ZGlzIDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdl
dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQy
XSwgdDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywg
OF0sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdl
dFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNy
byAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhb
UEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwg
c2NyYXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAg
ICAgICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShz
Y3JhdGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAg
ICAgICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKIAotLm9wR2V0
QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQot
ICAgIGRpc3BhdGNoKDkpCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBn
ZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRz
X2xlbmd0aDoKQEAgLTk3OCw2NSArOTk5LDkzIEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9wdXRfYnlfaWQ6CittYWNybyBw
dXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9h
ZGlzIDI0W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgd3JpdGVCYXJyaWVyKHQwKQotICAgIHN0b3JlcCB0MCwg
W3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAg
ICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3Jh
dGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCisgICAgICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCBzY3JhdGNoKQorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKHQwKQorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtwcm9wZXJ0eVN0b3Jh
Z2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCiAKIC5v
cFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9p
ZCkKICAgICBkaXNwYXRjaCg5KQogCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQo
d2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToK
KyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCi1tYWNybyBwdXRCeUlkVHJhbnNp
dGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlv
bmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAg
IGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9w
UHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGlzIDQw
W1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qw
XSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQx
KQotICAgIHdyaXRlQmFycmllcih0MSkKLSAgICBzdG9yZXAgdDEsIFt0M10KLSAgICBsb2FkcCA0
OFtQQiwgUEMsIDhdLCB0MQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0K
LSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisg
ICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAg
ICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEpCisg
ICAgICAgICAgICBzdG9yZXAgdDEsIFt0M10KKyAgICAgICAgICAgIGxvYWRwIDQ4W1BCLCBQQywg
OF0sIHQxCisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisg
ICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gbm9BZGRp
dGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAorCittYWNybyBzdHJ1Y3R1
cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgY29uc3QgcHJvdG9DZWxs
ID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZv
ciB0aGUgcHJvdG8KKyAgICBsb2FkcCA1NltQQiwgUEMsIDhdLCBzY3JhdGNoCisgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxvYWRwIFN0cnVjdHVyZUNo
YWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0
cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBicGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZHAgU3RydWN0dXJl
OjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGJwbmVxIG9sZFN0cnVj
dHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFkZHAgOCwgc2NyYXRjaAorICAg
IGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAu
bG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBz
bG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRo
SW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywg
d2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAgICAgICAgbWFjcm8gKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0
cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHBy
b3RvCi0gICAgICAgICAgICBsb2FkcCA1NltQQiwgUEMsIDhdLCBzY3JhdGNoCi0gICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICAgICAg
ICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAg
IGJwZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5k
b25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBv
bGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA4LCBzY3JhdGNo
Ci0gICAgICAgICAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0s
IFZhbHVlTnVsbCwgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0gICAgICAgIGVuZCkKKyAgICBwdXRC
eUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aE91dE9mTGluZVN0
b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBAIC0xMTA2LDggKzExNTUsOCBAQCBf
bGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0sIHQzCiAgICAgc3ViaSAxLCB0MwogICAgIGJpYWVxIHQzLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QxXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRwIFt0MCwgdDMs
IDhdLCB0MAorICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9vZmZzZXRCYXNlW3Qx
XSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDApCiAgICAg
bG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBzdG9yZXAgdDAsIFtjZnIsIHQxLCA4XQogICAg
IGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTg0LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsg
VGEKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CiAKKyMg
UHJvcGVydHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFMVUU2NAorICAgIGNvbnN0IElubGlu
ZVN0b3JhZ2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHkgPSA2CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50cwogaWYgSlNWQUxVRTY0CiAgICAg
Y29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMQpAQCAtMzEyLDggKzMxOSw3IEBA
IG1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmQKICAgICAgICAgc3RvcmVw
IHNjcmF0Y2gyLCBbcmVzdWx0XQogICAgICAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRv
cklEW3Jlc3VsdF0KLSAgICAgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRj
aDEKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
cmVzdWx0XQorICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVty
ZXN1bHRdCiAgICAgZW5kCiBlbmQKIApAQCAtNDgxLDYgKzQ4NywyMSBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV93aXRoX3RoaXM6CiAgICAgZGlzcGF0Y2goNSkKIAogCittYWNybyB3aXRoSW5saW5lU3Rv
cmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGludWF0aW9uKQorICAgICMgSW5kaWNh
dGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUK
KyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0ZXIgaXMgdW51c2VkLgorICAgIGNvbnRpbnVh
dGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkKK2VuZAorCittYWNybyB3aXRoT3V0T2ZMaW5l
U3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGludWF0aW9uKQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0XSwgcHJvcGVydHlTdG9yYWdlCisg
ICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBwcm9wZXJ0eVN0b3JhZ2UgcmVnaXN0ZXIgbm93IHBvaW50
cyB0byB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UsIGFuZCB0aGF0IHRoZSBvYmplY3QgcmVn
aXN0ZXIgbWF5IGJlIHJldXNlZAorICAgICMgaWYgdGhlIG9iamVjdCBwb2ludGVyIGlzIG5vdCBu
ZWVkZWQgYW55bW9yZS4KKyAgICBjb250aW51YXRpb24ocHJvcGVydHlTdG9yYWdlLCBvYmplY3Qp
CitlbmQKKworCiBfbGxpbnRfb3BfZGVsX2J5X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWxfYnlfaWQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTU1
NSw3ICs1NTUsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICBlbmQKICAgICAKICAgICBkZWYg
aGFuZGxlWDg2QWRkKGtpbmQpCi0gICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHVubGVzcyBJbW1lZGlh
dGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAg
IGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
CiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAog
ICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKICAg
ICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKQEAgLTU2OCw3ICs1NzIsMTEgQEAg
Y2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKLSAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZT
dWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAo
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBl
bmQKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1swXQogICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZm
aXgoa2luZCl9ICN7eDg2T3BlcmFuZHMoa2luZCwga2luZCl9IgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlOwotICAgICAgICBz
aXplX3QgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVu
Y3Rpb25OYW1lT2Zmc2V0OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJl
ck9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2
YXRlTmFtZVN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CkBAIC0yNjIsNyArMjYyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogYm91bmRG
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAg
c2l6ZV90IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1l
T2Zmc2V0OyB9CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgICAgIFN0cnVjdHVyZSog
bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBwcml2YXRlTmFtZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAg
U3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9p
bnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDI0ICs5Myw1NCBAQCB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiAg
ICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKKyAgICAKKyAgICBKU0Nl
bGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICBQcm9wZXJ0eVN0
b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAo
c3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmluYWxPYmplY3QoKTsKKyAgICAgICAg
Ly8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9y
IHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMu
CisgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRB
cHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0
b3JhZ2VTaXplKTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFn
ZT4odGVtcCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3Rv
cmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgfQorCisgICAgaWYgKHRoaXNP
YmplY3QtPm1faW5oZXJpdG9ySUQpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2luaGVyaXRvcklEKTsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2aXNpdG9yLm1f
aXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0
TWFya1Zpb2xhdGlvbjsKKyNlbmRpZgorfQorCit2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0ZpbmFs
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24g
PSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgor
ICAgIAogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAot
ICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+cHJvcGVydHlTdG9yYWdl
KCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNp
emUpOwotICAgIGVsc2UgeworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVj
dC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVf
dCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9y
S25vd25GaW5hbE9iamVjdCgpOwogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBo
ZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJl
ZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IHN0b3Jh
Z2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICB2
aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9y
YWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKICAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0
PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fcHJvcGVydHlT
dG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKKyAgICAgICAg
dGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmll
cjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAgICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJ
RCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwog
CisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+aW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7CisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9
IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAjZW5kaWYKQEAgLTE1Myw4ICsx
ODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgZm9y
IChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUp
KSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
ICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTI3Miw3ICszMDIsNyBAQCBib29sIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlCiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBpZiAodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChpc1ZhbGlkT2Zmc2V0
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkgewogICAgICAgICBpZiAoYXR0cmli
dXRlcyAmIERvbnREZWxldGUgJiYgIWV4ZWMtPmdsb2JhbERhdGEoKS5pc0luRGVmaW5lT3duUHJv
cGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgdGhpc09iamVjdC0+
cmVtb3ZlRGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKQEAgLTM5NCw3
ICs0MjQsNyBAQCBib29sIEpTT2JqZWN0Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjCiBib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpCisgICAgaWYgKGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldChl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgY291bGQgYmUgYSBmdW5j
dGlvbiB3aXRoaW4gdGhlIHN0YXRpYyB0YWJsZT8gLSBzaG91bGQgcHJvYmFibHkKQEAgLTUxNiwy
MCArNTQ2LDIwIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKIAog
Ym9vbCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlk
T2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0
ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RP
ZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3Ry
dWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChv
ZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChv
ZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1ICs1ODksMjIgQEAgU3RydWN0dXJl
KiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAgIHJldHVybiBtX2luaGVyaXRvcklE
LmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dQcm9wZXJ0eVN0b3Jh
Z2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogewog
ICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICAvLyBJdCdzIGltcG9ydGFudCB0
aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIHNpbmNlCiAgICAgLy8g
d2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zaXRpb24uCiAKLSAgICBQcm9wZXJ0
eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7Cisg
ICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fb3V0T2ZMaW5lU3RvcmFn
ZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gMDsKIAot
ICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgaWYgKCFvbGRQcm9wZXJ0eVN0
b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFr
ZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlw
ZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBuZXdQcm9wZXJ0eVN0b3Jh
Z2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShzaXpl
b2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdTaXplLCAmdGVtcCkpCiAgICAgICAg
ICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBvbGRQ
cm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlz
IGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0
aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQq
IHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQsOCArNjIxLDggQEAgYm9vbCBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG9iamVj
dC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgaWYgKG9mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJpYnV0
ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxOCArNzksMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5
IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIH07CiAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotI2Rl
ZmluZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA2Ci0jZWxzZQotI2RlZmlu
ZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA0Ci0jZW5kaWYKLQotQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IDApLCBmaW5h
bF9zdG9yYWdlX25vbl9uZWdhdGl2ZSk7CisgICAgY2xhc3MgSlNGaW5hbE9iamVjdDsKIAogICAg
IGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBC
YXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpTRmluYWxP
YmplY3Q7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogCkBAIC0xNjksMjYgKzE2NCw3MiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yCiAgICAgICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQg
dGhlIHByb3BlcnR5IG1hcC4KICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZv
dW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICAgfQog
CiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAg
ICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpu
b3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAogICAgICAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb247
Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5j
dGlvbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2Nh
dGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBv
ZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29u
c3QKKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3RydWN0
dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFn
ZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxDb25zdFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOworICAgICAg
ICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIC0gcHJvcGVydHlTdG9yYWdlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEp
OworICAgICAgICB9CisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2Uo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFnZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgIH0K
KyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENvbnN0
UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX291dE9m
TGluZVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0
b3JhZ2UoKSB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKworICAgICAgICBj
b25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgp
W29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAmb3V0
T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAg
ICAgfQorCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9y
YWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICAgICAgcmV0dXJu
ICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCldOwor
ICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0Rm9yTG9jYXRpb24oV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlc3VsdDsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJ
bklubGluZVN0b3JhZ2UgPSBsb2NhdGlvbiAtIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXRJbklubGluZVN0b3JhZ2UgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlu
bGluZVN0b3JhZ2VDYXBhY2l0eSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGxvY2F0aW9uIC0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICAgICAgdmFsaWRhdGVPZmZz
ZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJTEVfQVNT
RVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJv
cGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRz
LgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7
IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAgIHZvaWQg
cHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwg
SlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRh
LCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVk
KCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQor
ICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0
VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9u
Rm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAgdm9pZCBy
ZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9yYWdlKEpT
R2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgICAgIGJv
b2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBi
b29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdldCgpCi0g
ICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVydHlTdG9y
YWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwotICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQg
c2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0
dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93T3V0
T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJv
cGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0
eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3Ry
dWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJ
Zk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkKiBh
ZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZPdXRPZkxp
bmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3Rv
cmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgp
OwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocHJv
dG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3Rv
dHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0KCkpOwpA
QCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBK
U0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMg
eW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAg
ICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAtMzA1LDE5
ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAg
ICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAgICAgICAK
LSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlTdG9yYWdl
IHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0K
LSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAg
ICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3LDcgQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUp
IGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0
YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOworICAgICAg
ICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICszNzMsMTQg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBBU1NFUlQo
IXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0z
ODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rvcgog
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBz
dGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9C
SkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRv
dWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSk7
CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkg
PT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkp
OwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBAIC00MDAs
MTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAogICAg
ICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZXTsKICAg
ICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkgQEAgaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNpemVfdCBK
U09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5NiwxOCBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0dXJuIHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0KIAotaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2lu
bGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAgICBBU1NF
UlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8fCAoY2xh
c3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2b2lkKj4o
c3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlmICghc3Rv
cmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAgICBzZXRT
dHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9yYWdlLnNl
dChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpA
QCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1
ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgSlNP
YmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2JqZWN0OjpK
U09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVydHlTdG9y
YWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9mTGluZVN0
b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEsNiBAQCBp
bmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJuIGNyZWF0
ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6
aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0g
JkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1
Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQocHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcmV0
dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCk7
Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZv
KSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGluZm8pOwpA
QCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFzdEdldE93
blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1
cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAgICAgICAg
ICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAg
aWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAt
Njc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
ICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0
aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlv
bik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAg
ICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIg
aXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhl
biBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYg
KHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAtNzAwLDEz
ICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAg
ICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdl
ID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdy
b3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAg
ICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7Cisg
ICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisg
ICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRO
ZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3BlcnR5U3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAgIHNldE91
dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogCi0g
ICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBv
biBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rp
b24pCkBAIC03MTQsMTUgKzczMSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZz
ZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBzaXplX3Qg
Y3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAg
aWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJvcGVydHlT
dG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlmIChjdXJy
ZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAg
ICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3Vy
cmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotCi0g
ICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwg
c3RydWN0dXJlKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxp
bmVTdG9yYWdlKCk7IAorICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZM
aW5lU3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSk7CisKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgc2V0
T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAg
IC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFs
dWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUg
c2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0
cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0
cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RG
Ojpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAg
ICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25s
eSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhp
cy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwog
CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzgx
LDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAog
CiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJ
Zk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFjaXR5
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0g
bmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQob2xk
Q2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAKLSAg
ICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3
U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9sZENh
cGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNl
dFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwor
ICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCisg
ICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFn
ZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVy
ZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9j
YXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CiB9
CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewog
ICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nl
c3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdl
KCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQot
ICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3Rl
ZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9wZXJ0
eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdHJ1
Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0b3Jh
Z2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VD
YXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFn
ZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1LDYgQEAg
aW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2VsbCgpLT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6
ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYgKzkzOSwz
MiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAgcmV0dXJu
IHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91
IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoKKy8vIEZv
ciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBv
aW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1v
Zi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSAr
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsK
K30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJu
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUg
aW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBp
ZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICByZXR1
cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZp
c2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVtQ2FjaGVh
YmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1lcmFibGVQ
cm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
ICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
KCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnByb3BlcnR5
U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUo
KS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iq
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwotICAgIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMu
ZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVj
LCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
MTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7
CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3Rh
dGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5h
bWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxl
U2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVy
dHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgCkBAIC02
MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wgZ2V0T2Zm
c2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90
IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChp
ID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBtX29mZnNl
dEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04OCwxMiAr
ODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURh
dGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkK
ICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1l
VmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3Bl
cnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pz
U3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZl
Y3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVjdC0+
c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1aW50
MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1Np
emU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEy
MTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsK
ICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAg
IGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlk
T2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAg
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEyMTYzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2VycwogCiB2b2lkIGluaXRpYWxp
emVPcHRpb25zKCkKIHsKLSAgICBTRVQodXNlSklULCB0cnVlKTsKKyAgICBTRVQodXNlSklULCBm
YWxzZSk7CiAgICAgCiAgICAgU0VUKHNob3dEaXNhc3NlbWJseSwgZmFsc2UpOwogICAgIFNFVChz
aG93REZHRGlzYXNzZW1ibHksIGZhbHNlKTsgLy8gREZHIGRpc2Fzc2VtYmx5IGlzIHNob3duIGlm
IHNob3dEaXNhc3NlbWJseSB8fCBzaG93REZHRGlzYXNzZW1ibHkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2
aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBQ
cm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAor
I2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1
ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTcyLDEx
ICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAKIHN0
cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0gICAgdW5zaWdu
ZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7CiAKLSAgICBQ
cm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwg
U3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKICAg
ICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwgYXR0
cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc0LDggKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCB0byBtYWludGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVudHJpZXMgaW4gdGhlIHByb3BlcnR5
IHN0b3JhZ2UuCiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBoYXNE
ZWxldGVkT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIFByb3BlcnR5T2Zmc2V0
IGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KTsKKyAgICAKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXh0T2Zmc2V0KEpTVHlw
ZSB0eXBlKTsKIAogICAgIC8vIENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUg
Y29weSBoYXMgYXQgbGVhc3QgdGhlIGNhcGFjaXR5IHByb3ZpZGVkLgogICAgIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25l
ZCBuZXdDYXBhY2l0eSk7CkBAIC0yMzAsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCogbV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAgIHVuc2lnbmVkIG1fZGVs
ZXRlZENvdW50OwotICAgIE93blB0cjwgVmVjdG9yPHVuc2lnbmVkPiA+IG1fZGVsZXRlZE9mZnNl
dHM7CisgICAgT3duUHRyPCBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+ID4gbV9kZWxldGVkT2Zmc2V0
czsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNaW5pbXVtVGFibGVTaXplID0gMTY7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7CkBAIC0yNjQsOSAr
MjY3LDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0K
IAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1
bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdl
dCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBv
dGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRz
KQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25l
ZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFk
b3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7
CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYs
IEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlU
YWJsZSYgb3RoZXIpCkBAIC0yODgsOSArMjkxLDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlBy
b3BlcnR5VGFibGUoSlNHbAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNl
dHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBv
dGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4q
IG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAg
IGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRv
cHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAg
ICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+
KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjp+UHJv
cGVydHlUYWJsZSgpCkBAIC00NjksMjAgKzQ3MiwzMSBAQCBpbmxpbmUgYm9vbCBQcm9wZXJ0eVRh
YmxlOjpoYXNEZWxldGVkT2ZmCiAgICAgcmV0dXJuIG1fZGVsZXRlZE9mZnNldHMgJiYgIW1fZGVs
ZXRlZE9mZnNldHMtPmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFi
bGU6OmdldERlbGV0ZWRPZmZzZXQoKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFi
bGU6OmdldERlbGV0ZWRPZmZzZXQoKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZGVsZXRl
ZE9mZnNldHMtPmxhc3QoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0ZWRP
ZmZzZXRzLT5sYXN0KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwogICAg
IHJldHVybiBvZmZzZXQ7CiB9CiAKLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KQoraW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRk
RGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0
ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjx1bnNpZ25lZD4pOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZl
Y3RvcjxQcm9wZXJ0eU9mZnNldD4pOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZz
ZXQpOwogfQogCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNl
dChKU1R5cGUgdHlwZSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQorICAgICAgICBy
ZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIAorICAgIGlmICh0eXBlID09IEZpbmFsT2Jq
ZWN0VHlwZSkKKyAgICAgICAgcmV0dXJuIHNpemUoKTsKKyAgICAKKyAgICByZXR1cm4gc2l6ZSgp
ICsgZmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKIGlubGluZSBQYXNzT3duUHRyPFByb3BlcnR5
VGFibGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0Nl
bGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQobmV3Q2FwYWNp
dHkgPj0gbV9rZXlDb3VudCk7CkBAIC00OTksNyArNTEzLDcgQEAgaW5saW5lIHNpemVfdCBQcm9w
ZXJ0eVRhYmxlOjpzaXplSW5NZW1vcgogewogICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2YoUHJv
cGVydHlUYWJsZSkgKyBkYXRhU2l6ZSgpOwogICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQotICAg
ICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YodW5z
aWduZWQpKTsKKyAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgp
ICogc2l6ZW9mKFByb3BlcnR5T2Zmc2V0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNl
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlPZmZzZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU9mZnNldF9o
CisjZGVmaW5lIFByb3BlcnR5T2Zmc2V0X2gKKworI2luY2x1ZGUgIkpTVHlwZS5oIgorI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoSlNW
QUxVRTMyXzY0KQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2Rl
ZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJv
cGVydHlPZmZzZXQ7CisKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0
ID0gLTE7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5
ID0gSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQg
Zmlyc3RPdXRPZkxpbmVPZmZzZXQgPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKKy8vIERlY2xh
cmUgYWxsIG9mIHRoZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IHRlbmQgdG8gZG8gZm9yd2FyZCBj
YWxscy4KK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7Citp
bmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBl
KTsKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7Citp
bmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0
eXBlKTsKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsK
K2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7Citpbmxp
bmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5l
IHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lu
bGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCk7CitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RP
ZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZTbG90
c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSk7Citpbmxp
bmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgSlNUeXBlIHR5cGUpOworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlP
ZmZzZXRGb3IoSlNUeXBlIHR5cGUpOworCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgQVNTRVJU
KG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
b2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBp
bnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQKKyAgICAg
ICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAgICAgfHwgaXNPdXRPZkxp
bmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIEFTU0VS
VChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0
KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisK
K2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAg
IGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0
OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
Cit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0IDwgaW5saW5l
U3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1
cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNl
dChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1
cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAg
ICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNldCAt
IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVj
dGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc0lubGluZU9m
ZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNl
dCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworfQorCitp
bmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZz
ZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBu
dW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0
eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0g
RmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4g
bnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5l
IFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAg
aWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQor
ICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCAr
IDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpT
VHlwZSB0eXBlKQoreworICAgIHJldHVybiBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9m
ZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVy
dHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9w
ZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAg
ICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUg
IT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90
IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsK
ICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVl
LCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2Us
IEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVf
TUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVy
U2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAg
ICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3
ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xl
YXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNs
b3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEg
bWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdv
dWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9
IDA7CisgICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBt
X2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3
ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAg
ICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlw
ZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxNjM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBi
YXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNP
YmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAg
ICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7
CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAg
IHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAg
ICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0g
VW5jYWNoYWJsZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBB
U1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAg
ICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNp
emVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAg
IGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsOCArMTU2LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQog
ICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9j
bGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0
aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5m
by5pc0ZpbmFsT2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6
IDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHko
MCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNl
KQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3
OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1f
cHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8o
JnNfaW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRj
aGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0
KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQo
aW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5k
KQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRl
clNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0
YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8o
cHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJ
bml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2
aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0
KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0
eSkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1f
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1f
cHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1f
cHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAg
ICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHko
Z2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlw
ZUluZm8udHlwZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDcs
NyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAg
IH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1h
cChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKIAogICAgIGZvciAo
cHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAg
ICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lk
IFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUg
c2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5
KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJy
ZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVy
biA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVy
ZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0
T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0
UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAg
bV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRP
ZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3Bl
cnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5l
U3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5l
U3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1
cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1
Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVl
LmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2
LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAg
ICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlv
bi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmlj
VmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNp
dGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlz
dGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fdHlwZUluZm8udHlwZSgpKTsK
ICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAgICAg
cmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQog
Ci1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lm
aWMgZnVuY3Rpb24sIHdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAg
ICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1l
IGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAgLTMyNyw4ICszMjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9
IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0
ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJv
cGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OworICAgICAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxp
bmVDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAgICAgCkBA
IC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0CiAgICAgfQogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
IGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4g
dHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jv
d091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNl
dDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFu
c2l0aW9uKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9m
ZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKIAogICAgICAgICBz
aXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOwogICAgICAgICBW
ZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291bnQpOwotCisgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBm
aXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgUHJvcGVy
dHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAgICAg
Zm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsKICAgICAgICAgICAgIHZhbHVlc1tpXSA9
IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9mZnNldCk7CiAgICAgICAgICAgICAvLyBV
cGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUgbmV3IHByb3BlcnR5IG9mZnNldHMKLSAg
ICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBp
ICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhl
IG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAg
ICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsK
KyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zm
c2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmNsZWFyRGVs
ZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXplX3Qg
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDEzICs1
ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIAog
ICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAo
cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAg
ICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIGlmIChvdXRPZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVD
YXBhY2l0eSgpKQorICAgICAgICBncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICByZXR1cm4g
b2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCgh
bV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVj
ZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxEYXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVfdCBv
ZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAgIHJl
dHVybiByZW1vdmUocHJvcGVydHlOYW1lKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBA
IC02MzksMjAgKzYzOSwyMCBAQCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6
Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlU
YWJsZUZvclBpbm5pbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVy
KQogewotICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlU
YWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlU
YWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVybiBh
ZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBv
d25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKSk7CiB9CiAKLXNpemVf
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxs
KiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGds
b2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RG
Ojpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlk
KCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5k
OworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRy
eS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUu
Z2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1
bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFs
dWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJU
KGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQo
IUpTQzo6aXNWYWxpZE9mZnNldChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpOwogCiAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udEVudW0pCkBA
IC02OTgsMTIgKzY5OCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNH
bG8KICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAo
KTsKIAotICAgIHVuc2lnbmVkIG5ld09mZnNldDsKLQotICAgIGlmIChtX3Byb3BlcnR5VGFibGUt
Pmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxl
LT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgZWxzZQotICAgICAgICBuZXdPZmZzZXQgPSBtX3By
b3BlcnR5VGFibGUtPnNpemUoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBtX3By
b3BlcnR5VGFibGUtPm5leHRPZmZzZXQobV90eXBlSW5mby50eXBlKCkpOwogCiAgICAgbV9wcm9w
ZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCB0aGlzLCByZXAsIG5l
d09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOwogCkBAIC03MTEsNyArNzA2LDcg
QEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBu
ZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3
MTksNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByCiAgICAgaWYg
KCFwb3NpdGlvbi5maXJzdCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgc2l6ZV90
IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+cmVt
b3ZlKHBvc2l0aW9uKTsKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zm
c2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShy
ZXZpc2lvbiAxMjE2MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zm
c2V0KTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNo
YW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1
ZSBwcm90b3R5cGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJl
KiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdl
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAzLDMyICsxMDMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRl
bnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAgICAg
Ym9vbCBkaWRUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9Ci0g
ICAgICAgIGJvb2wgcHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICBib29sIHB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5U3RvcmFnZVNpemUoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXplKCkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewotICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50
U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9v
ZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IGN1
cnJlbnRTaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gb3V0T2ZM
aW5lQ2FwYWNpdHkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAg
QVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9w
ZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA+
PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0
eVRhYmxlLT5zaXplKCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgfQotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdl
U2l6ZSgpOyAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0ZW5E
aWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQg
YmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBz
aXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBhZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5
cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBO
b25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTE0OSwxOCArMTQ5LDExNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKLSAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91cy5n
ZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8p
OworICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAgICAg
ICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJl
VG9GaW5kKTsKIAotICAgICAgICB2b2lkIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwot
ICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNTRVJU
KHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgp
IGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0
dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNp
emUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAgICBz
aXplX3QgaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSBjb25zdDsKLQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29u
c3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQo
SlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxs
KiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7
CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsK
KyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9CisgICAg
ICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2Jq
ZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3Jh
Z2VTaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA8IGlubGluZVN0b3JhZ2VD
YXBhY2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZUZvcktu
b3duTm9uRmluYWxPYmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
bV90eXBlSW5mby50eXBlKCkgIT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIGlmICht
X3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAg
ICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsK
KyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19p
bmZvKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB0b3RhbFNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNp
emUoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHRoaXMtPmlu
bGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA8IGlubGluZUNh
cGFjaXR5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdG90YWxTaXplIC0gaW5saW5lQ2FwYWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQp
OworICAgICAgICB9CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVj
dFR5cGU7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZv
LnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0
OworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX29mZnNldCArIDE7CisgICAgICAgICAg
ICBpZiAocmVzdWx0ID4gaW5saW5lU3RvcmFnZUNhcGFjaXR5KQorICAgICAgICAgICAgICAgIHJl
dHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemUoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVj
dCgpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZVNpemUoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90
eXBlSW5mby50eXBlKCkpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFn
ZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9m
TGluZUNhcGFjaXR5ICsgaW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IGZpcnN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgfQorICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgc2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwor
ICAgICAgICAgICAgICAgIGlmICghaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAg
ICAgICBzaXplICs9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc2l6ZSAtIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7
CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA+PSBmaXJz
dFZhbGlkT2Zmc2V0KCkKKyAgICAgICAgICAgICAgICAmJiBvZmZzZXQgPD0gbGFzdFZhbGlkT2Zm
c2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQ
cm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3Bl
cnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRl
clNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMTc3LDcgKzI3MywxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllczsgfQogICAgICAg
ICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxl
ID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQor
ICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUt
PmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiAhSlNDOjppc1ZhbGlkT2Zmc2V0KG1fb2Zm
c2V0KTsKKyAgICAgICAgfQogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVj
aWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHZvaWQgZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1
bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KQEAg
LTI3Myw4ICszNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfSBEaWN0aW9uYXJ5S2lu
ZDsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5S2luZCk7CiAKLSAgICAgICAgc2l6ZV90
IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3Zl
KFByb3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHB1dFNwZWNpZmljVmFsdWUo
SlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVydHlO
YW1lKTsKIAogICAgICAgICB2b2lkIGNyZWF0ZVByb3BlcnR5TWFwKHVuc2lnbmVkIGtleUNvdW50
ID0gMCk7CiAgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMzAxLDcgKzQwMiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgdHJhbnNpdGlvbkNvdW50KCkgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gU2luY2UgdGhlIG51bWJlciBvZiB0cmFuc2l0aW9u
cyBpcyBhbHdheXMgdGhlIHNhbWUgYXMgbV9vZmZzZXQsIHdlIGtlZXAgdGhlIHNpemUgb2YgU3Ry
dWN0dXJlIGRvd24gYnkgbm90IHN0b3JpbmcgYm90aC4KLSAgICAgICAgICAgIHJldHVybiBtX29m
ZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCArIDE7CisgICAgICAgICAgICByZXR1cm4g
bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVD
aGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAtMzEwLDggKzQxMSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0aW9u
TGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBub09mZnNldCA9IC0xOwot
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNo
Q291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CkBAIC0zMzYsMTAgKzQz
NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIG11dGFibGUgSW5saW5l
V2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogCi0gICAgICAgIHVpbnQz
Ml90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIHVpbnQzMl90IG1fb3V0T2ZM
aW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3Ig
YW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7
CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwpAQCAtMzUzLDI2ICs0
NTIsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rp
b25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBp
bmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVy
biBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9w
cm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgICAgIHJl
dHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVu
dHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCi0gICAgaW5saW5l
IHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAg
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAg
aWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAg
ICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5
KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZp
cnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7Cisg
ICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAg
IH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5l
ZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150680</attachid>
            <date>2012-07-03 15:34:23 -0700</date>
            <delta_ts>2012-07-03 18:03:35 -0700</delta_ts>
            <desc>it might work</desc>
            <filename>overflowstorage_patch_12.diff</filename>
            <type>text/plain</type>
            <size>242839</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwNiBA
QAorMjAxMi0wNy0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgorICAgICAgICAoUmVwYXRjaEJ1ZmZlcik6Cisg
ICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChK
U0M6OlJlcGF0Y2hCdWZmZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6c2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUpOgorICAg
ICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpw
cmludEdldEJ5SWRPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
ckNoYWluKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3Rh
dHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6b2Zmc2V0
KToKKyAgICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChK
U0M6OlB1dEJ5SWRTdGF0dXM6OlB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0
ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xv
YmFsU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVH
bG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQp
OgorICAgICAgICAoUmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0Lmg6CisgICAgICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAg
ICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OlByb3BlcnR5QWNj
ZXNzUmVjb3JkOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZCk6CisgICAgICAgIChQcm9wZXJ0eUFjY2Vz
c1JlY29yZCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2Vzcyk6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJh
dGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRC
eUlETGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAg
ICAgKEpTQzo6REZHOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjpERkc6
OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRQdXRCeUlkTGlz
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2su
Y3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5VG9TdHViSW5mbyk6
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0dWJDb21waWxh
dGlvbkluZm86OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90b0xpc3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lTWV0aG9kcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNP
YmplY3QpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0aG9kX2No
ZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwYXRjaEdldEJ5SWRTZWxmKToK
KyAgICAgICAgKEpTQzo6SklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjpwYXRjaEdldEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6SklUOjpwYXRjaFB1dEJ5SWRS
ZXBsYWNlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAg
ICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZ1bmN0aW9uTmFtZU9mZnNldCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1v
dmVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
RGlyZWN0TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5saW5lU3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlVW5zYWZlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6b3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZv
ck9mZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRGb3JMb2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFVu
ZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFkZHJlc3NP
Zk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpKU09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9j
YXRlU3RvcmFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb1BhdGNo
ZWRTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6aW5kZXhSZWxhdGl2ZVRvQmFzZSk6CisgICAgICAg
IChKU0M6Om9mZnNldFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgor
ICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6OmdldE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVu
dGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWlu
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oOgorICAgICAgICAoUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TWFwRW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoUHJvcGVy
dHlUYWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
T2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Y2hlY2tPZmZz
ZXQpOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzVmFs
aWRPZmZzZXQpOgorICAgICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmlzT3V0T2ZMaW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6b2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0
T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAg
ICAgICAoSlNDOjpmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVNsb3Q6OmNsZWFyT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xv
dC5oOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkp
OgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VD
YXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdl
Q2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVG
b3JQaW5uaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpo
YXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0
eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnRvdGFsU3RvcmFnZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvdGFsU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmaXJzdFZh
bGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpsYXN0VmFsaWRPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25D
b3VudCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAxMi0wNy0wMyAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5yZXZp
ZXdlZCwgdXBkYXRlIC5naXRpZ25vcmUgdG8gaGFuZGxlIFZTMjAxMCBmaWxlcy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYy
LDYgKzU2MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJs
ZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQorI2Vsc2UKKyAgICBMYWJlbCBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGxhYmVsKCk7CisgICAgfQogI2VuZGlmCiAgICAgCiAgICAgTGFiZWwg
bGFiZWwoKQpAQCAtNjcyLDYgKzY3NywxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBy
ZXR1cm4gQXNzZW1ibGVyVHlwZTo6cmVhZFBvaW50ZXIoZGF0YUxhYmVsUHRyLmRhdGFMb2NhdGlv
bigpKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVM
b2NhdGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFj
ZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29kZUxvY2F0aW9uTGFiZWwgbGFi
ZWwpCisgICAgeworICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21w
dXRhdGlvbihsYWJlbC5kYXRhTG9jYXRpb24oKSk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0
Y2hCdWZmZXIuaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMjQg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVsaW5rTmVhckNhbGxlclRvVHJhbXBvbGluZShy
ZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChuZXdDYWxsZWVGdW5jdGlvbikpOwogICAg
IH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9jYXRpb25MYWJlbCBsYWJl
bCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQobGFiZWwp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKENv
ZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCwgYm9v
bCBpc0FjdGl2ZSkKKyAgICB7CisgICAgICAgIGlmIChpc0FjdGl2ZSkKKyAgICAgICAgICAgIHJl
cGxhY2VXaXRoTG9hZChsYWJlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCogbV9zdGFydDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgzOSw2ICsxODM5
LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDU7CiAgICAgfQogICAgIAorICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAg
ICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rp
b25TdGFydCk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQ
UkVfUkVYKQorICAgICAgICAgICAgcHRyKys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRy
KSB7CisgICAgICAgIGNhc2UgT1BfTU9WX0d2RXY6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBPUF9MRUE6CisgICAgICAgICAgICAqcHRyID0gT1BfTU9WX0d2RXY7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoQWRkcmVzc0NvbXB1dGF0aW9uKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAg
ICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlv
blN0YXJ0KTsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBS
RV9SRVgpCisgICAgICAgICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIp
IHsKKyAgICAgICAgY2FzZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAgICpwdHIgPSBPUF9MRUE7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPUF9MRUE6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0
dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCiAgICAgewogICAgICAgICBBU1NFUlQoY2Fs
bC5pc1NldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw5IEBAIHZv
aWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBjYXNlIG9wX2dldF9i
eV9pZDoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CisgICAgICAgIG9wID0gImdldF9ieV9pZF9vdXRf
b2ZfbGluZSI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3NlbGY6CiAg
ICAgICAgIG9wID0gImdldF9ieV9pZF9zZWxmIjsKICAgICAgICAgYnJlYWs7CkBAIC0xMDMzLDYg
KzEwMzYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkX3NlbGY6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvOgogICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZF9jaGFpbjoKQEAgLTEwNTksNiArMTA2MywxMCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOiB7CisgICAg
ICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfb3V0
X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9yZXBsYWNlIik7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTEwNzEsMTAgKzEwNzksMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbDogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
Z2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDI5LDcgKzIwNDUsOSBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICBJbnN0cnVj
dGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXV07CiAgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKICAgICAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAg
ICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZVVubGlua2luZykKQEAgLTIwMzksNiArMjA1Nyw4IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICAg
ICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5n
ZXQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rp
b25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5IEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KAogICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0
cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKICAgICAKICAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhTaW1wbGUsIGZhbHNlLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBz
cGVjaWZpY1ZhbHVlKTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yQ2hhaW4oR2V0QgogICAgICAgICAKICAgICByZXN1bHQubV9vZmZzZXQgPSBjdXJyZW50
U3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHJlc3VsdC5t
X29mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zm
c2V0KSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICByZXN1bHQubV9zdHJ1Y3R1cmVT
ZXQuYWRkKHN0cnVjdHVyZSk7CkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBHZXRCeUlkU3RhdHVzIEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgCi0gICAgICAg
IGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRP
ZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkgewogICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJl
U2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmVzdWx0Lm1fc3BlY2lmaWNWYWx1ZSA9
IEpTVmFsdWUoc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlm
IChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0
KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lm1fc3RydWN0dXJl
U2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3NiwxMCArMTc2LDEwIEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0Nl
bGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgICAgICBzaXplX3QgbXlPZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCgKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG15T2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQoCiAgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQobXlPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0x
OTYsNyArMTk2LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9
IG5vdEZvdW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlQocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJU
KCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCi0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCkgeworICAgIGlmICgh
aXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgIHJlc3VsdC5tX3N0YXRl
ID0gVGFrZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7
CiAgICAgICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTgwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgR2V0QnlJZFN0YXR1c19oCiAjZGVmaW5l
IEdldEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIApAQCAtNDYsMTMg
KzQ3LDEzIEBAIHB1YmxpYzoKIAogICAgIEdldEJ5SWRTdGF0dXMoKQogICAgICAgICA6IG1fc3Rh
dGUoTm9JbmZvcm1hdGlvbikKLSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAg
LCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgR2V0QnlJ
ZFN0YXR1cygKICAgICAgICAgU3RhdGUgc3RhdGUsIGJvb2wgd2FzU2VlbkluSklULCBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNldCgpLAotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gbm90Rm91bmQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwg
VmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCisgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBK
U1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigp
KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlU2V0KQogICAgICAgICAsIG1fY2hhaW4oY2hhaW4pCkBAIC03Niw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYg
dGhpcyBpcyBhIGRpcmVjdCBhY2Nlc3MuCiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNWYWx1ZSgpIGlmIHRo
ZXJlIGlzIG5vIHNwZWNpZmljIHZhbHVlLgotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJl
dHVybiBtX3dhc1NlZW5JbkpJVDsgfQogICAgIApAQCAtODgsNyArODksNyBAQCBwcml2YXRlOgog
ICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBWZWN0b3I8U3RydWN0dXJlKj4g
bV9jaGFpbjsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3QgbV9vZmZz
ZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJ
VDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJl
dmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGlu
ZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF90aGlzLCA1KSAvKiBoYXMgdmFs
dWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkLCA5KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0
X2J5X2lkX3NlbGYsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNy
byhvcF9nZXRfYnlfaWRfcHJvdG8sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYnlfaWRfY2hhaW4sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcg
Ki8gXApAQCAtMTIyLDkgKzEyMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8o
b3BfZ2V0X3N0cmluZ19sZW5ndGgsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWQsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX291dF9vZl9saW5l
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCisgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSwgOSkgXAog
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBpZiAoIXN0cnVj
dHVyZSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOwogICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9wdXRfYnlfaWQpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9m
ZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkCisgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkgeworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52
YWxpZE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1w
bGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3
LDE4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NF
UlQoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKICAgICAKICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ci0gICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAg
ICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9
PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUKKyAgICAg
ICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNoYWluKTsKICAgICAKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+
Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFs
aWRPZmZzZXQpOwogICAgIAogICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRp
b24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKICNlbHNlCkBAIC05
NCwyNCArOTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNl
OiB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJh
c2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCiAgICAg
ICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlm
IChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAg
U2ltcGxlUmVwbGFjZSwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNl
LmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAg
ICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAg
fQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CiAgICAgICAg
IEFTU0VSVChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQo
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5z
aXRpb24uc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwKICAgICAgICAgICAg
ICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgp
LApAQCAtMTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hh
aW4uZ2V0KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFs
aWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zm
c2V0KTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5lIFB1dEJ5SWRTdGF0dXNf
aAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX29sZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKDApCiAgICAgICAg
ICwgbV9zdHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAg
ICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBz
dHJ1Y3R1cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9vbGRT
dHJ1Y3R1cmUob2xkU3RydWN0dXJlKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVj
dHVyZSkKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKG1fc3RhdGUg
PT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09ICFtX29sZFN0
cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9
PSAhbV9uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJh
bnNpdGlvbikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBBU1NFUlQoKG1fc3RhdGUg
PT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNl
dCA9PSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlv
biB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBpbnZhbGlkT2Zm
c2V0KSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOwpAQCAtOTAs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1cmVDaGFpbiogc3Ry
dWN0dXJlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNoYWluOyB9Ci0gICAgc2l6
ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25l
d1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1cmVDaGFpbjsKLSAgICBz
aXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNv
bHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDE5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYg
RU5BQkxFKExMSU5UKSB8fCBFTkFCTEUoSklUKQogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMg
Y29tcHV0ZUZvclN0cnVjdHVyZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRl
c0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldCgKICAgICAgICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBhdHRy
aWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3Vu
ZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJlc29s
dmVHbG9iYWxTdGF0dXMoKTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhS
ZXNvbHZlR2xvYmFsU3RhdHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1Zh
bHVlKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpIHx8IEVOQUJMRShKSVQpCiAKIHN0YXRp
YyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEludChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9i
YWxTdGF0dXMuaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAgIFN0
YXRlIHN0YXRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IGludmFsaWRPZmZzZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFs
dWUoKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlKHN0
cnVjdHVyZSkKQEAgLTcwLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9CiAgICAgCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQot
ICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgSlNWYWx1
ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAKIHBy
aXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwot
ICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBK
U1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
aAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIHB1YmxpYzoK
ICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5zaXpl
KCk7IH0KICAgICAKLSAgICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJlc1tpXS0+aXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8vIENhbGwgdGhpcyBp
ZiB5b3Uga25vdyB0aGF0IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lzdCBvZiBleGFjdGx5
CiAgICAgLy8gb25lIHN0cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvblN0cnVjdHVy
ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
NCw2ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFs
dWVHUFI7CiAgICAgICAgICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFI7CiAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb0RvbmU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb1N0b3JhZ2VMb2FkOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9T
dHJ1Y3RDaGVjazsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7
CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNoZWNrSW1tVG9DYWxsOwpAQCAtMjE5LDYg
KzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZUNoZWNrOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwog
I2Vsc2UKQEAgLTIzMCw2ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICAgICAgfSBnZXQ7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihib29sIHVzZXNSZXN1
bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlPZmZz
ZXQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2Rl
SW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAgICAgYm9vbCB1c2VJ
bmxpbmVTdG9yYWdlLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9w
ZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYz
MCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAKIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBkZXN0aW5hdGlvbk9w
ZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9m
ZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9kZUluZGV4IHByb3Bl
cnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1c2VJbmxpbmVT
dG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihK
U09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7CisgICAgZWxz
ZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFn
ZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQogICAgIHNldChkZXN0
aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICBHZXRCeU9m
ZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLCBPcEluZm8o
cHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAgICAgICAgCiAg
ICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vz
c0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAgICBzdG9yYWdlQWNj
ZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICBtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2
NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAg
ICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7
CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICghZ2V0QnlJZFN0YXR1
cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1
cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpOwog
ICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgY3VycmVu
dFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAgICAgICAgIGJhc2Ug
PSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwgY3VycmVudFN0cnVj
dHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1
Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVzZUlu
bGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFsbEFyZVVzaW5nSW5s
aW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50
IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMs
IHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwg
Z2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBAIC0xNzA3LDgg
KzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAg
ICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBw
cmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVTdG9yYWdlLAotICAg
ICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5k
LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNl
dCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBA
IC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRf
YnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICAgICAgICAgICAg
IHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09
IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5v
ZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAgLTIyMjUsNyArMjIxNyw4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xvdCksIGdldFNjb3BlQ2hhaW4sIGdldChz
b3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9T
UkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjQxLDggKzIyMzQsMTEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFz
ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJS
ZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKQEAgLTIyNTksMjUgKzIyNTUs
MjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1w
bGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJl
LCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAg
ICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAg
aWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZz
ZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihK
U09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdlLCBiYXNlLCB2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vz
c0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJ
ZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdl
QWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zm
c2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1i
ZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdl
QWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNl
IGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1
cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlk
U3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHB1dEJ5
SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZUNoYWluSXNTdGls
bFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSwKQEAgLTIzMDgsMTYg
KzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgp
KSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRl
eCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMubmV3
U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdl
dFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNl
dCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAg
ICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBPcElu
Zm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksCkBAIC0yMzI2LDcgKzIzMTIs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTdG9y
YWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAgICAgICAgICBzdG9yYWdl
QWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgpICsgb2Zmc2V0T2Zmc2V0
OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRp
dmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgc3RvcmFn
ZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNz
RGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjczOCw4ICsyNzI0LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwg
Z2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwg
c3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlk
ZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZU51bWJlcisrOyAv
LyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBpbmZvLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMjE4MDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfcHV0
X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgY2FzZSBvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9nZXRf
Z2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKICAgICBj
YXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiAr
MTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogI2VuZGlm
CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
bV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAg
ICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRp
b24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0
eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmJhc2VHUFIgPSBtX3Byb3Bl
cnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZp
c2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nl
c3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciog
c2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApA
QCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1w
IHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHJvcGVydHlT
dG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFn
TG9hZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBh
eWxvYWRMb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2Vu
ZXJhdG9yLApAQCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7
CiAgICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1
cmVJbW0oc3RydWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJl
Q2hlY2spCisgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxv
YWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0
b3JlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3Qg
UHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JTdG9yZTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
cGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZv
aWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5
SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlv
blB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQgZGZnUmVw
YXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3QpCiB7CiAg
ICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUyLDE4ICs1
MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAKICAgICAv
LyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJ
bW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0
aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNl
dChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChjb21wYWN0KQotICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkpOwogICAgIGVsc2UKLSAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9m
KEpTVmFsdWUpICogb2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNo
LmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9y
YWdlKG9mZnNldCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoY29tcGFjdCkg
ewotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5y
ZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgb2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9IGVsc2UgewotICAg
ICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRh
dGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9y
U3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpT
VmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xMDUsNyArMTA2LDcgQEAgc3RhdGlj
IHZvaWQgbGlua1Jlc3RvcmVTY3JhdGNoKExpbmtCdWZmZQogICAgIGxpbmtSZXN0b3JlU2NyYXRj
aChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1
cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgc2l6ZV90IGNvdW50LCBzaXplX3Qgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29k
ZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxh
YmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIHN0dWJSb3V0aW5lKQorc3RhdGljIHZvaWQgZ2Vu
ZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVs
IHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkBAIC0xMzksMTMgKzE0MCwyMyBAQCBzdGF0aWMg
dm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgICAgIGN1cnJTdHJ1Y3R1cmUg
PSBpdC0+Z2V0KCk7CiAgICAgfQogICAgIAotICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVj
dC0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdEdQUik7CisgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KG9mZnNldCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKHByb3RvT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLCByZXN1bHRHUFIpOwog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSwgcmVzdWx0VGFnR1BSKTsKLSAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSks
IHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSksIHJlc3VsdEdQ
Uik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKICNlbmRpZgorICAgIH0gZWxzZSB7Cisg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+YWRkcmVzc09mT3V0T2ZMaW5lU3Rv
cmFnZSgpLCByZXN1bHRHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1
bHRHUFIpOworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICB9CiAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzdWNjZXNzLCBmYWlsOwogICAgIApAQCAtMzQ5LDEyICszNjAsMjAgQEAgc3Rh
dGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgfHwgc2xv
dC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbSkgewogICAgICAg
ICAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0
ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpKSwgc2NyYXRjaEdQUik7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgc2NyYXRj
aEdQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNl
dCgpKSksIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgorICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAg
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BS
KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwg
c2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uRnVuY3Rpb24gPSBvcGVyYXRp
b25DYWxsR2V0dGVyOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM4NSwxMyArNDA0LDI3IEBA
IHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgIGhh
bmRsZXJDYWxsID0gc3R1YkppdC5jYWxsKCk7CiAgICAgICAgICAgICBzdHViSml0Lmp1bXAoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdEdQ
Uik7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHJlc3VsdEdQUik7CisjZWxzZQorICAgICAgICAg
ICAgICAgIGlmIChiYXNlR1BSID09IHJlc3VsdFRhZ0dQUikgeworICAgICAgICAgICAgICAgICAg
ICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRS
ZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQ
Uik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVU
b0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOworICAgICAgICAgICAgICAg
ICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZz
ZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFz
ZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAgc3R1
YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxh
dGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAgICAg
ICAgICAgICBpc0RpcmVjdCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTU2Nyw3ICs2MDAsNyBAQCBz
dGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXIg
c3R1YkppdDsKICAgICAKLSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3
cml0ZUJhcnJpZXJOZWVkZWQgfHwgIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkp
IHsKKyAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJO
ZWVkZWQgfHwgaXNPdXRPZkxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CiAgICAg
ICAgIHNjcmF0Y2hHUFIgPSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BS
LCB2YWx1ZUdQUik7CiAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAg
ICAgc3R1YkppdC5wdXNoKHNjcmF0Y2hHUFIpOwpAQCAtNTg2LDIwICs2MTksMjAgQEAgc3RhdGlj
IHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogI2VuZGlmCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBz
dHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkg
KyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgp
KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNj
cmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsK
LSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIo
dmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAg
ICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsK
LSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7Cisg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAg
ICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlm
CiAgICAgCkBAIC02ODUsMjAgKzcxOCwyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlv
blN0dWIoCiAKICAgICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1
cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFs
dWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAg
IHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2Ug
ewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAg
ICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAg
IHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNp
emVvZihKU1ZhbHVlKSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYg
KHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0
b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2Yo
SlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lu
bGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3Jl
MzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90
LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0
b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNs
b3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsK
KyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIApAQCAt
NzUyLDcgKzc4NSw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGUK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIHNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYwotICAg
ICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBz
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBpZiAob2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKQEAgLTgx
NSw3ICs4NDgsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MKLSAgICAg
ICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAgICAgaWYgKG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw3ICs1MDgsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGls
ZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBh
dGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7
CiAgICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9h
ZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKKyAgICBKSVRDb21waWxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0
LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxD
b21wYWN0IHRhZ0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NP
ZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdH
UFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBh
dGNoID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApA
QCAtNTUwLDcgKzU1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29k
ZU8KICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5
QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJl
LCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29t
cGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0
YWdMb2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRv
bmVMYWJlbCwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBz
YWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4
X3Q+KHJlc3VsdFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAt
NTY1LDcgKzU2Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8K
IAogICAgIHdyaXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNl
LCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVy
OjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKCk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9h
ZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHRhZ1N0b3JlV2l0aFBhdGNoID0gbV9qaXQu
c3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSkpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBwYXlsb2FkU3Rv
cmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVBh
eWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKIApAQCAtNTk3LDcg
KzU5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICB9
CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVj
b3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCh0YWdTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHBheWxvYWRTdG9yZVdpdGhQYXRjaC5s
YWJlbCgpKSwKICAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0
PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLApAQCAtMzU1MCw3ICszNTUyLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAg
ICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAg
YnJlYWs7CkBAIC0zODkxLDggKzM4OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzTm90TWF0
Y2ggPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCByZXN1bHRQYXlsb2Fk
R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Cisj
aWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc091
dE9mTGluZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWws
IHJlc29sdmVJbmZvR1BSLCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7Cisg
ICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgaXNPdXRPZkxpbmUubGluaygmbV9q
aXQpOworI2VuZGlmCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4
KHJlc3VsdFBheWxvYWRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdo
dCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwg
cmVzdWx0VGFnR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIxODAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDk3LDcgKzQ5Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29t
cGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1f
aml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBy
ZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0g
bV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CisgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9y
YWdlKCkpLCByZXN1bHRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IGxv
YWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2go
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCAwKSwgcmVzdWx0R1BSKTsKICAgICAKICAg
ICBKSVRDb21waWxlcjo6TGFiZWwgZG9uZUxhYmVsID0gbV9qaXQubGFiZWwoKTsKQEAgLTUxNyw4
ICs1MTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAg
fQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0
dXJlQ2hlY2ssIGxvYWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLAotICAgICAgICAgICAgZG9u
ZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3Vs
dEdQUiksCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBsb2FkV2l0aFBhdGNoLAorICAgICAgICAg
ICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90
PihzY3JhdGNoR1BSKSwKICAgICAgICAgICAgIHNwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCA/IFBy
b3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNJblVzZSA6IFByb3BlcnR5QWNjZXNzUmVjb3Jk
OjpSZWdpc3RlcnNGbHVzaGVkKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgu
cmVsZWFzZSgpKTsKQEAgLTUzNiw3ICs1MzcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPCiAKICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIHZh
bHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgSklUQ29tcGlsZXI6
OkxhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2lu
dHMoKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJ
VENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0
aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgMCkpOwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0Lmxh
YmVsKCk7CkBAIC01NjYsNyArNTY4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwg
Tm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVu
dGlmaWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3Bl
cnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVs
KCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BS
KSkpOworICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vz
c1JlY29yZCgKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0
KCksIGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNh
ZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7
CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAt
MzU3NCw3ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5
U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIs
IG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNh
c2UKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5m
b0dQUik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1
bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIp
OworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNPdXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVx
dWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkp
OworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmso
Jm1faml0KTsKKyNlbmRpZgorICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgp
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUlu
ZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlu
bGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7CiAgICAg
ICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVi
bGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmhlcml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBv
YmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIs
IHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNj
ZXB0YWJsZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFz
IHlvdSdyZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9i
amVjdChjZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0
PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIyLDcgKzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVH
CiAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAg
ICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3
ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhh
dCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpA
QCAtMTg1MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNh
Y2hlRwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxs
RnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7
CiAgICAgaWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX2dlbmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNv
bHZlX3dpdGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAg
REVGSU5FX09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09E
RShvcF9nZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHBy
b3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3
LDYgKzM1MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19s
ZW5ndGg6CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5F
X09QQ09ERShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9w
dXRfYnlfaWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZh
bHVlKHIpIG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2
ICszNTY3LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENP
REUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENP
REUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkg
bmV3U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3Qo
YikKICAgICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3Rv
cmFnZUlmTmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAg
ICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNp
Z25lZCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSB2UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0
LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0
KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwog
CkBAIC0zNjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50
IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZz
ZXQgPSB2UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENb
NV0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlv
bigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkg
PT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1Zh
bHVlKCkpOwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgSlNWYWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNW
YWx1ZSgpOwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVj
dGVkU3Vic2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQo
aW5kZXgsIG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3Qp
ID0gSlNWYWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7
CiAgICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfY3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAg
ICAgREVGSU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlf
dmFsKQpAQCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29w
ZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2lu
YykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRf
b2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9w
ZXJ0eVN0dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2lu
TG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAg
aW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGlu
ZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KHByb3BlcnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZv
LnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6
OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1
OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNl
IFB1dEJ5SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0
Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJh
c2VsaW5lLnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IGluZm8ucGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2Vt
Ymxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBh
cmU7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNo
ZWNrOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZDsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29t
cGFjdCBnZXREaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4NiwyNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29t
cGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVj
aywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
LAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
c3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNl
bWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxz
ZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwKICNlbmRpZgorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKICAgICAgICAgICAgIDogbV90eXBl
KEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAg
ICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikKICAgICAgICAgICAgICwgZ2V0
U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29tcGFyZSkKICAgICAgICAgICAgICwgZ2V0
U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICAgICAsIHByb3BlcnR5U3Rv
cmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKICNlbHNlCkBA
IC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5
SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBh
dGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAg
ICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAogI2Vsc2UK
LSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21w
YXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIKICNlbmRp
ZgorICAgICAgICAgICAgKQogICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAgICAgICAg
ICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRo
QmVnaW4oaG90UGF0aEJlZ2luKQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHBy
b3BlcnR5U3RvcmFnZUxvYWQpCiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShz
dHJ1Y3R1cmVUb0NvbXBhcmUpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgcHV0
RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMwOSw0MCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrKS5wcml2YXRlQ29tcGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRC
eUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewog
ICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAg
aml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAg
ICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJl
c3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
R2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21w
aWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGpp
dC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAg
ICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGlj
U3RydWN0dXJlcywgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRP
ZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJv
dG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJl
bnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBz
aXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFBy
b3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQg
aml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9m
ZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwg
Y3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3Qs
IGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3Rh
dGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5
cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2sp
OwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1
YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBj
aGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0
QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAg
ICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAg
ICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVj
dHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRy
ZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlUHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBib29sIGRpcmVjdCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkK
ICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwog
ICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRl
eDsKQEAgLTM1OCw4ICszNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
dm9pZCByZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8q
KTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYs
IFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNl
bGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9j
aywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgcGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJl
U3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0
QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRo
b2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENh
bGxMaW5rSW5mbyYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBK
U09iamVjdCosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBp
bGVQYXRjaEdldEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiAr
MzkxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlu
a1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAg
ICBKSVRDb2RlIHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNr
LCBKSVRDb21waWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZM
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0Kiwg
aW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwg
c2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJl
Q2hhaW4qLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5
SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdl
dEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdl
dEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyos
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1
cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgYm9vbCBkaXJlY3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9y
eUhhbmRsZT4gcHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRh
KiwgVHJhbXBvbGluZVN0cnVjdHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNU
SU5hdGl2ZUNhbGwoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAg
LTQzNiw2ICs0NTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKCkgeyB9CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9k
ZSB7IE1heUJlRmluYWwsIEtub3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9w
MSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApAQCAt
NDY4LDEwICs0ODQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxl
R2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGlu
dCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7
Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNo
ZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3Qq
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNp
emVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQ
YXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVj
dE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQg
dmFsdWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJl
Z2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAg
ICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2Fk
LCBSZWdpc3RlcklEIG9mZnNldCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAg
ICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQpOwogCiAgICAgICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAg
ICAgdm9pZCBlbWl0QWRkMzJDb25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQz
Ml90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQg
YmFzZVZSZWcsIElkZW50aWZpZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dD
YXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBm
YWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9p
ZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNl
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zm
c2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAg
ICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBp
bGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5
QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyOSwxMSArNDI5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0
cgogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpoYXNJbmxp
bmVTdG9yYWdlKCkpIHsKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmpl
Y3QpKSwgcmVzdWx0LCBzdG9yYWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwg
QWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOwot
ICAgIH0gZWxzZQotICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJl
c3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJ
RCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzk0LDE2ICs3OTQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5z
dHJ1YwogCiAKICAgICAvLyBWZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdCksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9BZGRyZXNz
KSwgcmVnVDMpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEds
b2JhbFJlc29sdmVJbmZvLCBzdHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFB0cihOb3RFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwg
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAgIC8vIExv
YWQgcHJvcGVydHkuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQp
KSwgcmVnVDMpOwotICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8v
IHBheWxvYWQKLSAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZwor
ICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIEtu
b3duTm90RmluYWwpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3Rv
cmUoZHN0LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFt
aWMgPyBPUENPREVfTEVOR1RIKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xF
TkdUSChvcF9yZXNvbHZlX2dsb2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwMSw5ICs3MDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0
cnVjCiAKICAgICAvLyBMb2FkIGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0aGF0IHRo
ZSBnbG9iYWwgb2JqZWN0IGFsd2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVy
dHlTdG9yYWdlKSksIHJlZ1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09G
RlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIo
QmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29tcGlsZUdl
dERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RGaW5hbCk7
CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJl
dmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9k
X2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0
IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NF
UlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09E
RV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOwor
ICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9u
ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9i
eV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3Ry
dWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9w
X2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0aW9uICs9
IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICszMzQsOCBA
QCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0
cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJl
LCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1
bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGxhYmVsSWdu
b3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwxID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBh
dGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMCk7IC8v
IHBheWxvYWQKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiA9IGxvYWRQ
dHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QyLCBwYXRjaEdldEJ5
SWREZWZhdWx0T2Zmc2V0KSwgcmVnVDEpOyAvLyB0YWcKICAgICAKQEAgLTM0MSw3ICszNDMsNyBA
QCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICAKICAgICBFTkRfVU5JTlRF
UlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAotICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
byhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVudExhYmVsMSwgZGlz
cGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGls
YXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHVi
R2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJl
bDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTM5OSw3ICs0MDEsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgRGF0YUxhYmVsUHRyIHN0
cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHJXaXRoUGF0Y2goTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hH
ZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QxKTsKKyAgICBM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9y
YWdlKCkpLCByZWdUMSk7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxID0gc3Rv
cmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1QyLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1
dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFj
ZW1lbnRMYWJlbDIgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDMsIEFkZHJl
c3MocmVnVDEsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsgLy8gdGFnCiAgICAgCkBAIC00
MDcsNyArNDEwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgog
CiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIsIHJlZ1QxLCByZWdUMiwgU2hvdWxk
RmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAg
bV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGls
YXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhC
ZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVu
dExhYmVsMikpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2Rl
T2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgcHJvcGVydHlTdG9yYWdl
TG9hZCwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDMwLDMwICs0
MzMsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogfQogCiAv
LyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5
IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwg
c2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxv
YWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2Fj
aGVkT2Zmc2V0OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIGVtaXRTdG9yZShvZmZzZXQsIHZhbHVlVGFn
LCB2YWx1ZVBheWxvYWQsIGJhc2UpOworICAgIGlmIChpc091dE9mTGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKQorICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgZW1pdFN0b3JlKGluZGV4UmVsYXRpdmVU
b0Jhc2UoY2FjaGVkT2Zmc2V0KSwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CiB9CiAK
IC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1h
eSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9h
ZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0
UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGludCBvZmZzZXQg
PSBjYWNoZWRPZmZzZXQ7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsK
KyAgICAgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1
bHRUYWcsIHJlc3VsdFBheWxvYWQsIGJhc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAogICAgIFJlZ2lzdGVySUQgdGVtcCA9IHJlc3VsdFBheWxvYWQ7Ci0gICAgbG9hZFB0cihBZGRy
ZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgdGVtcCk7Ci0g
ICAgZW1pdExvYWQob2Zmc2V0LCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOworICAg
IGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCB0ZW1wKTsKKyAgICBlbWl0TG9hZChpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNl
dCksIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgdGVtcCk7CiB9CiAKLXZvaWQgSklUOjpjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywg
UmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6
OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCkKIHsKLSAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1
bHRUYWcpOwotICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1
bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlm
IChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihiYXNlLT5sb2NhdGlvbkZvck9mZnNldChjYWNoZWRPZmZzZXQpKSwgcmVzdWx0VGFnKTsK
KyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKKyAgICAgICAgbG9hZDMyKEFk
ZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSks
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihi
YXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdFRhZyk7CisgICAgbG9hZDMy
KEFkZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0
KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEFkZHJl
c3MocmVzdWx0VGFnLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGly
ZWN0KQogewogICAgIC8vIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCByZWdUMCBjb250YWlu
cyB0aGUgYmFzZVBheWxvYWQgYW5kIHJlZ1QxIGNvbnRhaW5zIHRoZSBiYXNlVGFnLiBSZXN0b3Jl
IHRoZW0gZnJvbSB0aGUgc3RhY2suCiAjaWYgQ1BVKE1JUFMpIHx8IENQVShTSDQpIHx8IENQVShB
Uk0pCkBAIC00ODksNyArNTAzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpbwogICAgIAogICAgIC8vIFJlYWxsb2NhdGUgcHJvcGVydHkgc3RvcmFnZSBpZiBuZWVk
ZWQuCiAgICAgQ2FsbCBjYWxsVGFyZ2V0OwotICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxv
YyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VS
ZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdlUmVhbGxvYykg
ewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtlIGEgSklUIHN0
dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAgICAgICAvLyBy
ZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2ZW50IHRoZSBz
dGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWduZWQuCkBAIC00OTksNyArNTEzLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHViQ2FsbC5za2lw
QXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8g
aWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVlCi0gICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3Rl
ZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwogICAgICAgICBz
dHViQ2FsbC5jYWxsKHJlZ1QwKTsKIApAQCAtNTUzLDcgKzU2Nyw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxl
clRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+
c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
CiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBA
IC01NjEsMTUgKzU3NSwxNCBAQCB2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sq
IGNvCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIEpJVFN0dWJzOjpjdGlfb3BfZ2V0X2J5
X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQg
bm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRy
ZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkpOwogICAgIAotICAg
IGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQ
YXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVu
IHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0g
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1l
bnRMYWJlbDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5
bG9hZCkpOyAvLyBwYXlsb2FkCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9h
ZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNP
dXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXRSZWxhdGl2
ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0
aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJl
cGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVw
bGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZm
ZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTc3LDEyICs1OTAsMTEgQEAg
dm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogICAgIC8vIFNob3VsZCBw
cm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8g
YW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
Q2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihkaXJlY3QgPyBjdGlf
b3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1dF9ieV9pZF9nZW5lcmljKSk7
CiAgICAgCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9mZnNldDsK
LQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBsb2Fk
IGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlKSwgc3Ry
dWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNw
bGFjZW1lbnRMYWJlbDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMucGF5bG9hZCkpOyAvLyBwYXlsb2FkCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFz
ZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAgICByZXBhdGNoQnVmZmVyLnNldExv
YWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlz
T3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9Q
YXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChz
dHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNo
LmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpOyAvLyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRB
cnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjQx
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0
cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwq
CiAgICAgCkBAIC03MDAsNyArNzEyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cgogfQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJl
Z1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVy
ZShyZWdUMCwgc3RydWN0dXJlKTsKQEAgLTc2MCw3ICs3NzIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgy
OSw3ICs4NDEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChz
dHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50
SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVf
dCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0
LDcgKzkxNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAg
ICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0
dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTc1LDEzICs5ODcsMjcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVy
VG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3By
b3RvX2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2Fk
LCBSZWdpc3RlcklEIG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUp
CiB7CiAgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRy
KEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNl
KTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwot
ICAgIGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChmaW5h
bE9iamVjdE1vZGUgPT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJh
bmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0
eSkpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0
T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAg
ICAgICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIo
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBkb25lLmxpbmsodGhp
cyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNP
dXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZElt
bTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAg
ICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOwor
ICAgIH0KKyAgICBsb2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNh
cGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxv
YWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAz
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2Fk
MzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVn
VDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJl
c3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNh
Y2hlYWJsZVNsb3RzKSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VU
T0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAg
ICAgCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4
MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAot
dm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQg
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0
TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihC
YXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNT
RVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2Rl
ID09IE1heUJlRmluYWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NU
aGFuLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlz
SW5saW5lLmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBkb25lLmxpbmsodGhp
cyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNP
dXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZElt
bTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAg
ICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gp
OworICAgIH0KKyAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRy
LCAtaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2lu
ZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVy
cHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChv
cF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBt
X2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZSk7CiAKICAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRo
b2RfY2hlY2spOwogICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwpAQCAtMzczLDE0ICszOTAsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRC
eUlkSG90UGF0aChpbnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBw
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsK
ICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAg
IExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlZ1QwKTsKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVs
ID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDAsIHBh
dGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMCk7CiAKICAgICBMYWJlbCBwdXRSZXN1bHQo
dGhpcyk7CiAKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRI
b3RQYXRoKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2Rl
T2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ss
IGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29t
cGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlT
dHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRM
YWJlbCwgcHV0UmVzdWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKQEAgLTQ0MCwxNCArNDU4LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJl
OwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3Ry
dWN0dXJlKSkpKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7CisgICAgTGFiZWwgcHJvcGVydHlTdG9yYWdl
TG9hZCA9IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAg
IERhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNl
dFBhdGNoKHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7
CiAKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogCiAg
ICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmls
dGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdp
biwgc3RydWN0dXJlVG9Db21wYXJlLCBkaXNwbGFjZW1lbnRMYWJlbCkpOworICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
byhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwp
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpA
QCAtNDcxLDI4ICs0OTAsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0
cnVjdAogCiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9y
YWdlLiAgTWF5IG92ZXJ3cml0ZSB0aGUKIC8vIHZhbHVlIGluIG9iamVjdFJlZy4KLXZvaWQgSklU
Ojpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1
ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0KQogewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1
ZSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5
U3RvcmFnZSgpKSwgYmFzZSk7Ci0gICAgc3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgb2Zm
c2V0KSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAg
c3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpICsgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9m
ZnNldCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7Cisg
ICAgc3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKIH0KIAogLy8gQ29tcGlsZSBhIGxv
YWQgZnJvbSBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNl
Lgotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICog
c2l6ZW9mKEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
c3VsdCwgb2Zmc2V0KSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zm
c2V0KSkgeworICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpICsgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KGNhY2hlZE9mZnNldCkpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9y
YWdlKCkpLCByZXN1bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIHNpemVvZihKU1Zh
bHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsK
IH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJl
Z2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBjYWNo
ZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CisgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihiYXNl
LT5sb2NhdGlvbkZvck9mZnNldChjYWNoZWRPZmZzZXQpLCByZXN1bHQpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3Rv
cmFnZSgpLCByZXN1bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikpLCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNp
dGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0
KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAg
IEp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9m
IHRoZSByaWdodCBTdHJ1Y3R1cmUuCkBAIC01MjIsNyArNTU0LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogI2VuZGlmCiAgICAgCiAgICAgLy8gZW1pdCBhIGNh
bGwgb25seSBpZiBzdG9yYWdlIHJlYWxsb2MgaXMgbmVlZGVkCi0gICAgYm9vbCB3aWxsTmVlZFN0
b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9
IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBib29sIHdpbGxO
ZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0g
bmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmICh3aWxsTmVlZFN0b3Jh
Z2VSZWFsbG9jKSB7CiAgICAgICAgIC8vIFRoaXMgdHJhbXBvbGluZSB3YXMgY2FsbGVkIHRvIGxp
a2UgYSBKSVQgc3R1YjsgYmVmb3JlIHdlIGNhbiBjYW4gY2FsbCBhZ2FpbiB3ZSBuZWVkIHRvCiAg
ICAgICAgIC8vIHJlbW92ZSB0aGUgcmV0dXJuIGFkZHJlc3MgZnJvbSB0aGUgc3RhY2ssIHRvIHBy
ZXZlbnQgdGhlIHN0YWNrIGZyb20gYmVjb21pbmcgbWlzYWxpZ25lZC4KQEAgLTUzMiw3ICs1NjQs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgICAgIHN0
dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyBiYXNlCiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1
bWVudCgpOyAvLyBpZGVudAogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gdmFs
dWUKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSk7CiAg
ICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSk7
CiAgICAgICAgIHN0dWJDYWxsLmNhbGwocmVnVDApOwogICAgICAgICBlbWl0R2V0SklUU3R1YkFy
ZygyLCByZWdUMSk7CkBAIC01NzIsNyArNjA0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9s
aW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGlu
ZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
K3ZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTgwLDE0ICs2MTIs
MTMgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNo
b3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNu
J3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3Bf
Z2V0X2J5X2lkX3NlbGZfZmFpbCkpOwogCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVl
KSAqIGNhY2hlZE9mZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJv
cG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29r
IGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5k
YXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0
dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBh
dGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlT
dG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwp
LCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAKLXZv
aWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9p
ZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVj
dCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAt
NTk1LDExICs2MjYsMTAgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2Nr
KgogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1
dCB0aGF0IGRvZXNuJ3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJl
cGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlv
blB0cihkaXJlY3QgPyBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1
dF9ieV9pZF9nZW5lcmljKSk7CiAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICog
Y2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2Vy
dHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9y
LgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVU
b0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVy
LnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxB
dE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9h
ZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRp
dmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKQEAgLTY0Myw3ICs2NzMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFy
cmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFk
ZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUg
cHJvdG90eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0
aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyBy
ZWZlcmVuY2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9h
ZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3ICs3NDAsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRf
YnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
U2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAg
ICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAg
ICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAsNyArODAwLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9
CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlw
ZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90
b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5p
dGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVu
Y2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlw
ZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBl
YXJseSEpCkBAIC04MzksNyArODY5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50
SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVf
dCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWls
OwpAQCAtOTE0LDcgKzk0NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFp
bkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlv
bkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIx
ODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0ODYsMTMgKzE0ODYsMTYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmpl
Y3QqLCBvcF9wdXRfYgogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKTsKICAgICBpbnQzMl90IG9sZFNpemUgPSBzdGFja0ZyYW1lLmFyZ3NbM10uaW50
MzIoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHN0YWNrRnJhbWUuYXJnc1s0XS5z
dHJ1Y3R1cmUoKTsKLSAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaW50MzJfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpOworICAgIAorICAgIEFTU0VSVChvbGRTaXplID49IDApOworICAg
IEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc3RhY2tGcmFtZS5nbG9iYWxEYXRhOwotICAgIFBy
b3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9i
YWxEYXRhLCBvbGRTaXplLCBuZXdTaXplKTsKLSAgICBiYXNlLT5zZXRQcm9wZXJ0eVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0b3Jh
Z2UgbmV3U3RvcmFnZSA9IGJhc2UtPmdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG9s
ZFNpemUsIG5ld1NpemUpOworICAgIGJhc2UtPnNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIAogICAgIHJldHVybiBiYXNlOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
Z2V0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk0MCw3ICs5
NDYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAg
ICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgewogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewot
ICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhl
IG1ldGhvZHMgd2UgY2FsbApAQCAtOTUyLDcgKzk1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzRd
LnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6
ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXpl
b2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgK
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2
OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAg
ICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4p
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUu
b3BlcmFuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNh
Y2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1
dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAg
ICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
cHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29y
a2luZyBjb3B5KQpAQCAtOTE5LDYgKzkxOSwyNCBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAg
IGRpc3BhdGNoKDMpCiAKIAorbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3du
Tm90RmluYWwocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHRhZywgcGF5bG9hZCkK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3Jh
Z2VDYXBhY2l0eSwgb2sgZW5kKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3Jh
Z2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAgICBsb2FkaSBUYWdPZmZz
ZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5
T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2Fk
CitlbmQKKworbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNl
dCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGJpbHQgcHJvcGVydHlPZmZz
ZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQor
ICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5s
aW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UK
Ky5yZWFkeToKKyAgICBsb2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5
W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwg
cHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChz
aXplLCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAg
IERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KQEAgLTkzMCw5ICs5NDgsNyBAQCBtYWNybyByZXNv
bHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCiAgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdwogICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRpIFRh
Z09mZnNldFt0MCwgdDEsIDhdLCB0MgotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4
XSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbCh0MSwg
dDAsIHQyLCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpA
QCAtMTA4NywzMSArMTEwMyw0NCBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAg
ICAgZGlzcGF0Y2goNSkKIAogCi1fbGxpbnRfb3BfZ2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1v
bm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5
IHRoZQorIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNo
YW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQg
YmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0
YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0
aCwgd2hpY2ggaXMgd2hhdAorIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCitt
YWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFu
ZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQotICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxs
b3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAj
IHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9i
eV9pZCB3aWxsIGNvbnRpbnVlCi0gICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNh
Y2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ug
d291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBs
b2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQx
Ci0gICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDJdLCB0MgotICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0
MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0
UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MywKKyAgICAgICAgdDAsCisgICAgICAgIG1hY3Jv
IChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICAgICAgICAgIGxvYWRpIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwg
c2NyYXRjaAorICAgICAgICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2Us
IHQyXSwgdDIKKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
ICAgICAgICAgbG9hZGkgMzJbUENdLCB0MQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0
Y2gsIHQyLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKworICAg
IC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9p
ZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2go
OSkKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhP
dXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAg
LTExMzAsNjggKzExNTksOTYgQEAgX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAg
IGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3B1dF9ieV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0
UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwg
dDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQy
Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGkg
MjBbUENdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCi0g
ICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKLSAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFd
Ci0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQor
ICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAg
ICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgICAgICAgICAgbG9h
ZGkgMjBbUENdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIs
IHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQorICAg
ICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQor
ICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFd
CisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworX2xsaW50X29w
X3B1dF9ieV9pZDoKKyAgICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCiAub3BQdXRCeUlk
U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAg
ZGlzcGF0Y2goOSkKIAogCi1tYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tz
KQorX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRP
ZkxpbmVTdG9yYWdlKQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVj
a3MsIGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkg
NFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJb
UENdLCB0MgogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJ
ZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAg
YWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRw
IEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQotICAgIHdyaXRlQmFycmll
cih0MSwgdDIpCi0gICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCi0gICAgbG9hZGkgMjRbUENd
LCB0MQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZXAgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0
b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5
U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwg
dDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisg
ICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbdDNdCisgICAgICAgICAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgICAgICAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQp
CitlbmQKKworbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkK
K2VuZAorCittYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gp
CisgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRT
dHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworCisgICAgbG9hZHAgMjhbUENdLCBzY3Jh
dGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxv
YWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBiaWVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKy5s
b29wOgorICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJv
dG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0s
IC5vcFB1dEJ5SWRTbG93CisgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgYmluZXEgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAor
LmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAg
ICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBl
bmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoSW5saW5l
U3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9v
Zl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aE91
dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwg
c2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVy
ZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KLSAg
ICAgICAgCi0gICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFz
c2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAgIGxvYWRw
IFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAotICAgICAgICAgICAg
YXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgYmll
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxU
YWcsIC5kb25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAg
ICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVy
ZQotICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAg
ICAgICAgIGFkZHAgNCwgc2NyYXRjaAotICAgICAgICAgICAgYmluZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAotICAgICAg
ICAuZG9uZToKLSAgICAgICAgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNo
YWluQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVj
dHVyZUNoYWluQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0
X2J5X3ZhbDoKQEAgLTEyNjEsOSArMTMxOCw4IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAg
ICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICBiaWFlcSB0MCwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5
UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIK
LSAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QyLCB0MCwgOF0sIHQzCisgICAgYWRkaSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX29m
ZnNldEJhc2VbdDNdLCB0MAorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDAsIHQy
LCB0MSwgdDMpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNzc4LDYg
Kzc3OCwyMiBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGRpc3BhdGNoKDMpCiAKIAorbWFj
cm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwocHJvcGVydHlPZmZz
ZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVlKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3Rl
cSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0
QW5kU3RvcmFnZQorICAgIGxvYWRwIC04ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFu
ZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdmFsdWUKK2VuZAorCittYWNybyBsb2FkUHJv
cGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB2
YWx1ZSkKKyAgICBiaWx0IHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5p
c0lubGluZQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5k
U3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAgICBqbXAgLnJlYWR5CisuaXNJbmxpbmU6Cisg
ICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgKyBJbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkgKiA4LCBvYmplY3RBbmRTdG9yYWdlCisucmVhZHk6CisgICAgbG9hZHAgLTggKiBJbmxp
bmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2
YWx1ZQorZW5kCisKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJh
bmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgOFtQQiwgUEMsIDhdICAgRGVzdGluYXRpb24gZm9y
IHRoZSBsb2FkLgpAQCAtNzg5LDggKzgwNSw3IEBAIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwg
c2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0
MSwgMjRbUEIsIFBDLCA4XSwgc2xvdwogICAgIGxvYWRpcyAzMltQQiwgUEMsIDhdLCB0MQotICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZHAgW3Qw
LCB0MSwgOF0sIHQyCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQy
KQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwg
OF0KICAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQQiwgUEMsIDhdLCB0MApAQCAtOTM3LDcgKzk1
Miw3IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQog
CiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CittYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFn
ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdl
dF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQogICAgICMg
b3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55
dGltZSBpZiBmYWlscywgc2luY2UKQEAgLTk0OCwxOCArOTYzLDMwIEBAIF9sbGludF9vcF9nZXRf
YnlfaWQ6CiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpcyA0MFtQQiwgUEMs
IDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCi0g
ICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAg
IGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgW3QwLCB0Ml0sIHQzCi0gICAgc3Rv
cmVwIHQzLCBbY2ZyLCB0MSwgOF0KLSAgICBsb2FkcCA2NFtQQiwgUEMsIDhdLCB0MQotICAgIHZh
bHVlUHJvZmlsZSh0MywgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3Jh
Z2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3Rv
cmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQx
CisgICAgICAgICAgICBsb2FkcCBbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAg
ICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIGxvYWRwIDY0
W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDEpCisg
ICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCisgICAgICAgICAgICAKKyAgICAu
b3BHZXRCeUlkU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2J5X2lkKQorICAgICAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6
CisgICAgZ2V0QnlJZCh3aXRoSW5saW5lU3RvcmFnZSkKIAotLm9wR2V0QnlJZFNsb3c6Ci0gICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CisgICAgZ2V0QnlJZCh3aXRoT3V0
T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CkBAIC05
NzgsNjUgKzEwMDUsOTMgQEAgX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGRp
c3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3B1dF9ieV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0UHJv
cGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBD
LCA4XSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0Mwot
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAg
ICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MCkKLSAgICB3cml0ZUJhcnJpZXIodDApCi0gICAgc3RvcmVwIHQwLCBbdDMsIHQxXQotICAg
IGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAg
ICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgICAgICAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHNjcmF0Y2gpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDAp
CisgICAgICAgICAgICBzdG9yZXAgc2NyYXRjaCwgW3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAg
ICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworX2xsaW50X29wX3B1dF9i
eV9pZDoKKyAgICBwdXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCiAub3BQdXRCeUlkU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0
Y2goOSkKIAogCi1tYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorX2xs
aW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVT
dG9yYWdlKQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdl
dFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDI0W1BC
LCBQQywgOF0sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwg
dDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGFk
ZHAgdDEsIHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCi0gICAgd3JpdGVC
YXJyaWVyKHQxKQotICAgIHN0b3JlcCB0MSwgW3QzXQotICAgIGxvYWRwIDQ4W1BCLCBQQywgOF0s
IHQxCi0gICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQotICAgIGRpc3BhdGNo
KDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisg
ICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBhZGRw
IHQxLCBwcm9wZXJ0eVN0b3JhZ2UsIHQzCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MSkKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSkKKyAgICAgICAgICAgIHN0
b3JlcCB0MSwgW3QzXQorICAgICAgICAgICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEKKyAgICAg
ICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRp
c3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mo
b2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tz
KG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1
cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwor
ICAgIGxvYWRwIDU2W1BCLCBQQywgOF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBi
dHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwg
b2sgZW5kKQorICAgIGJwZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBW
YWx1ZU51bGwsIC5kb25lCisubG9vcDoKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRj
aF0sIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkcCA4LCBzY3JhdGNoCisgICAgYnBuZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29wCisuZG9uZToK
IGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5
SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdl
KQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6
CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5l
U3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAg
IHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNo
LCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMg
UmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KLSAgICAgICAg
ICAgIGxvYWRwIDU2W1BCLCBQQywgOF0sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNy
byAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVy
ZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgYnBlcSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKLSAgICAgICAg
Lmxvb3A6Ci0gICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVj
dHVyZV0sIHByb3RvQ2VsbAotICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtw
cm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKLSAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwg
W3NjcmF0Y2hdLCBzbG93Ci0gICAgICAgICAgICBhZGRwIDgsIHNjcmF0Y2gKLSAgICAgICAgICAg
IGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAu
bG9vcAotICAgICAgICAuZG9uZToKLSAgICAgICAgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFu
c2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBf
bGxpbnRfb3BfZ2V0X2J5X3ZhbDoKQEAgLTExMDYsOCArMTE2MSw4IEBAIF9sbGludF9vcF9nZXRf
YnlfcG5hbWU6CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKICAgICBz
dWJpIDEsIHQzCiAgICAgYmlhZXEgdDMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2Fj
aGVhYmxlU2xvdHNbdDFdLCAub3BHZXRCeVBuYW1lU2xvdwotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZHAgW3QwLCB0MywgOF0sIHQwCisgICAg
YWRkaSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX29mZnNldEJhc2VbdDFdLCB0MworICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDMsIHQwLCB0MCkKICAgICBsb2FkaXMgOFtQQiwg
UEMsIDhdLCB0MQogICAgIHN0b3JlcCB0MCwgW2NmciwgdDEsIDhdCiAgICAgZGlzcGF0Y2goNykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQs
MTMgQEAgY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYQogIyBTdHJpbmcg
ZmxhZ3MuCiBjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKIAorIyBQcm9wZXJ0eSBzdG9y
YWdlIGNvbnN0YW50cworaWYgSlNWQUxVRTY0CisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFj
aXR5ID0gNAorZWxzZQorICAgIGNvbnN0IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDYKK2VuZAor
CiAjIEFsbG9jYXRpb24gY29uc3RhbnRzCiBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBKU0ZpbmFs
T2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAxCkBAIC0zMTIsOCArMzE5LDcgQEAgbWFjcm8gYWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZAogICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFty
ZXN1bHRdCiAgICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVz
dWx0XQogICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQot
ICAgICAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBz
dG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAg
ICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0KICAgICBl
bmQKIGVuZAogCkBAIC00ODEsNiArNDg3LDIxIEBAIF9sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhp
czoKICAgICBkaXNwYXRjaCg1KQogCiAKK21hY3JvIHdpdGhJbmxpbmVTdG9yYWdlKG9iamVjdCwg
cHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24pCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBv
YmplY3QgaXMgdGhlIHByb3BlcnR5IHN0b3JhZ2UsIGFuZCB0aGF0IHRoZQorICAgICMgcHJvcGVy
dHkgc3RvcmFnZSByZWdpc3RlciBpcyB1bnVzZWQuCisgICAgY29udGludWF0aW9uKG9iamVjdCwg
cHJvcGVydHlTdG9yYWdlKQorZW5kCisKK21hY3JvIHdpdGhPdXRPZkxpbmVTdG9yYWdlKG9iamVj
dCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24pCisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
b3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RdLCBwcm9wZXJ0eVN0b3JhZ2UKKyAgICAjIEluZGljYXRl
IHRoYXQgdGhlIHByb3BlcnR5U3RvcmFnZSByZWdpc3RlciBub3cgcG9pbnRzIHRvIHRoZQorICAg
ICMgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlIG9iamVjdCByZWdpc3RlciBtYXkgYmUg
cmV1c2VkCisgICAgIyBpZiB0aGUgb2JqZWN0IHBvaW50ZXIgaXMgbm90IG5lZWRlZCBhbnltb3Jl
LgorICAgIGNvbnRpbnVhdGlvbihwcm9wZXJ0eVN0b3JhZ2UsIG9iamVjdCkKK2VuZAorCisKIF9s
bGludF9vcF9kZWxfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2RlbF9ieV9pZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2luZyBjb3B5KQpAQCAtNTU1LDcgKzU1NSwxMSBA
QCBjbGFzcyBJbnN0cnVjdGlvbgogICAgIGVuZAogICAgIAogICAgIGRlZiBoYW5kbGVYODZBZGQo
a2luZCkKLSAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUKKyAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sx
XSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZm
aXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKICAgICAgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgaWYg
b3BlcmFuZHNbMF0udmFsdWUgPT0gMApAQCAtNTY4LDcgKzU3MiwxMSBAQCBjbGFzcyBJbnN0cnVj
dGlvbgogICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8g
UmVnaXN0ZXJJRAotICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0g
KCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAg
aWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRz
WzBdCiAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3t4
ODZPcGVyYW5kcyhraW5kLCBraW5kKX0iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIHNpemVfdCBtX2Z1bmN0
aW9uTmFtZU9mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZz
ZXQ7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyT2JqZWN0U3RydWN0
dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0
dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogbmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBzaXplX3QgZnVuY3Rp
b25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fQogICAgICAgICBTdHJ1Y3R1cmUqIHByaXZhdGVOYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGlu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMjQgKzkzLDU0IEBA
IHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKICAgICBib29sIHdhc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uOwogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1h
cmtWaW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdl
ID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7Cisg
ICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpOworICAgICAgICAvLyBXZSBoYXZlIHRo
aXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9m
IHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KKyAgICAgICAgdm9p
ZCogdGVtcCA9IHN0b3JhZ2U7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwg
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOwor
ICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKKyAg
ICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdl
QmFycmllcjo6VW5jaGVja2VkKTsKKyAgICB9CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmhl
cml0b3JJRCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9y
SUQpOwogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
OworI2VuZGlmCit9CisKK3ZvaWQgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTRmluYWxPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGaW5hbE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CisgICAgdmlzaXRvci5tX2lzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOworI2VuZGlmCisgICAgCiAgICAgSlND
ZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgUHJvcGVydHlT
dG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5wcm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBzaXpl
X3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAg
ICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7Ci0gICAgZWxz
ZSB7CisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVT
dG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXpl
ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2Jq
ZWN0KCk7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2Ug
R0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUt
cHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKLSAgICAgICAg
dmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAgICAgIHZpc2l0b3IuY29weUFu
ZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwg
c3RvcmFnZVNpemUpOwogICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9y
YWdlPih0ZW1wKTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KHN0
b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOworICAgICAgICB0aGlzT2JqZWN0LT5t
X291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQp
OwogICAgIH0KIAogICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKQogICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7CiAKKyAgICBzaXplX3Qg
c3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5saW5lU2l6ZUZvcktub3du
RmluYWxPYmplY3QoKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5pbmxp
bmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2
aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRpZgpAQCAtMTUzLDggKzE4Myw4IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICBmb3IgKEpTT2JqZWN0KiBv
YmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAg
ICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBv
YmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7
CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOwpAQCAtMjcyLDcgKzMwMiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2UKIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlOwotICAgIGlmICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KSAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKGlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+
c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udERl
bGV0ZSAmJiAhZXhlYy0+Z2xvYmFsRGF0YSgpLmlzSW5EZWZpbmVPd25Qcm9wZXJ0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB0aGlzT2JqZWN0LT5yZW1vdmVEaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMzk0LDcgKzQyNCw3IEBAIGJv
b2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWMKIGJvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKLSAgICBpZiAoc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3Vu
ZCkKKyAgICBpZiAoaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0
aGUgc3RhdGljIHRhYmxlPyAtIHNob3VsZCBwcm9iYWJseQpAQCAtNTE2LDIwICs1NDYsMjAgQEAg
dm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogCiBib29sIEpTT2JqZWN0
OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewotICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgc2l6ZV90IG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAg
ICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAg
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RG
b3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6
Om5vdEZvdW5kKQorICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC01NTksMjUgKzU4OSwyMiBAQCBTdHJ1Y3R1cmUqIEpTT2JqZWN0Ojpj
cmVhdGVJbmhlcml0b3JJRChKCiAgICAgcmV0dXJuIG1faW5oZXJpdG9ySUQuZ2V0KCk7CiB9CiAK
LVByb3BlcnR5U3RvcmFnZSBKU09iamVjdDo6Z3Jvd1Byb3BlcnR5U3RvcmFnZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKK1Byb3BlcnR5
U3RvcmFnZSBKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5l
d1NpemUgPiBvbGRTaXplKTsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBmdW5j
dGlvbiBub3QgcmVseSBvbiBzdHJ1Y3R1cmUoKSwgc2luY2UKICAgICAvLyB3ZSBtaWdodCBiZSBp
biB0aGUgbWlkZGxlIG9mIGEgdHJhbnNpdGlvbi4KIAotICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQ
cm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsKKyAgICBQcm9wZXJ0eVN0
b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOwogICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSAwOwogCi0gICAgaWYgKGlzVXNp
bmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICBpZiAoIW9sZFByb3BlcnR5U3RvcmFnZSkgewogICAg
ICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJz
dCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2lu
dGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IG5ld1Byb3BlcnR5U3RvcmFnZTsKICAgICAgICAg
aWYgKCFnbG9iYWxEYXRhLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKHNpemVvZihXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KSAqIG5ld1NpemUsICZ0ZW1wKSkKICAgICAgICAgICAgIENSQVNIKCk7
CiAgICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFn
ZT4odGVtcCk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9sZFNpemU7ICsr
aSkKLSAgICAgICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZVtpXSA9IG9sZFByb3BlcnR5U3RvcmFn
ZVtpXTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBo
ZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJl
ZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IG9sZFBy
b3BlcnR5U3RvcmFnZTsKQEAgLTU5NCw4ICs2MjEsOCBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CiAgICAg
SlNDZWxsKiBjZWxsID0gMDsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxs
KTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRP
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3Iob2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSwgYXR0cmlidXRlcyk7CiAgICAgcmV0
dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDE4ICs3OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIv
c2V0dGVyCiAgICAgfTsKIAotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0jZGVmaW5lIEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDYKLSNlbHNlCi0jZGVmaW5lIEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKLSNlbmRpZgotCi1DT01QSUxFX0FTU0VSVCgoSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gMCksIGZpbmFsX3N0b3JhZ2Vfbm9u
X25lZ2F0aXZlKTsKKyAgICBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogCiAgICAgY2xhc3MgSlNPYmpl
Y3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQg
Y2xhc3MgSlNDZWxsOworICAgICAgICBmcmllbmQgY2xhc3MgSlNGaW5hbE9iamVjdDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBm
cmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNo
RW50cnkqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKQEAgLTE2
OSwyNiArMTY0LDcyIEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IK
ICAgICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkg
bWFwLgogICAgICAgICBKU1ZhbHVlIGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJl
Y3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlw
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERp
cmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9j
YXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUo
KSk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zm
c2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAg
ICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAg
ICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0
KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKLSAgICAgICAgc2l6ZV90IG9mZnNldEZvckxvY2F0
aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICBi
b29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzSW5s
aW5lU3RvcmFnZSgpOyB9CisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2VVbnNhZmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PENvbnN0UHJvcGVydHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAg
UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2VVbnNhZmUoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbG9jYXRpb24gLSBwcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0K
KyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsKKyAgICAgICAgfQorICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VV
bnNhZmUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3Jh
Z2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5n
ZXQoKTsgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0
dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQorCisgICAgICAgIGNvbnN0IFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdl
KClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICB9CisKKyAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
b2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJ
bklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0
b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgcmVzdWx0OworICAgICAgICAgICAgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFn
ZSA9IGxvY2F0aW9uIC0gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICAgICAgaWYgKG9m
ZnNldEluSW5saW5lU3RvcmFnZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oaW5saW5lU3RvcmFnZUNh
cGFjaXR5KSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRpb24gLSBv
dXRPZkxpbmVTdG9yYWdlKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICAgICAgICAgIHZh
bGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5z
aXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTIwNSw5ICsyNDYsOSBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgcHV0
T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVy
dHkgb2Zmc2V0cy4KLSAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAg
ICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNl
dFVuZGVmaW5lZCgpOyB9CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+
Z2V0KCk7IH0KKyAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25G
b3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQorICAgICAg
ICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkg
eyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKIApAQCAtMjI4LDI0ICsyNjksMTYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQo
KSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAg
ICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsK
IAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd1Byb3BlcnR5
U3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwot
ICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLSAgICAgICAgewotICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPQotICAgICAgICAgICAgICAgICFtX3Byb3BlcnR5U3RvcmFn
ZS5nZXQoKQotICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3By
b3BlcnR5U3RvcmFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAx
KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gc3RydWN0dXJlKCktPmlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAg
ICAgICB2b2lkIHNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3Jh
Z2UsIFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3Jh
Z2UgZ3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNp
emVfdCBuZXdTaXplKTsKKyAgICAgICAgdm9pZCBzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICBi
b29sIHJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQg
b2xkQ2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJl
YWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2Fw
YWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2Nh
dGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAg
ICAgdm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgdm9pZCogYWRkcmVz
c09mT3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmbV9w
cm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4gJm1fb3V0T2ZMaW5lU3RvcmFnZTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMjYxLDcgKzI5NCw3IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3Rh
dGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKLSAgICAgICAgc3RhdGljIHNpemVf
dCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5o
ZXJpdG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwpAQCAtMjcxLDcgKzMwNCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2Jq
ZWN0X2lubGluZVN0b3IKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwot
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsK
KyAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc0VtcHR5KCkpOwogICAgICAgICAgICAg
QVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6
aGVhcChwcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc09i
amVjdCgpKTsKQEAgLTI4Nyw3ICszMjAsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yCiAKICAgICAgICAgLy8gVG8gaW5zdGFudGlhdGUgb2JqZWN0cyB5b3UgbGlr
ZWx5IHdhbnQgSlNGaW5hbE9iamVjdCwgYmVsb3cuCiAgICAgICAgIC8vIFRvIGNyZWF0ZSBkZXJp
dmVkIHR5cGVzIHlvdSBsaWtlbHkgd2FudCBKU05vbkZpbmFsT2JqZWN0LCBiZWxvdy4KLSAgICAg
ICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlu
bGluZVN0b3JhZ2UpOworICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzZXRJbmhlcml0b3JJRCgpCiAgICAgICAgIHsK
QEAgLTMwNSwxOSArMzM4LDYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsK
ICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3Bl
cnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5n
ZXQoKTsgfQotCi0gICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0
aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAgfQotCi0gICAgICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zm
c2V0XTsKLSAgICAgICAgfQotCiAgICAgICAgIHRlbXBsYXRlPFB1dE1vZGU+CiAgICAgICAgIGJv
b2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKIApAQCAtMzI3LDcg
KzM0Nyw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChK
U0dsb2JhbERhdGEmKTsKIAotICAgICAgICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFn
ZTsKKyAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2luaGVyaXRvcklEOwogICAgIH07CiAKQEAgLTM1Mywx
NCArMzczLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICAgICAgOiBK
U09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIDApCisgICAgICAgICAgICA6IEpTT2JqZWN0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAgICAgICAg
ICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
CisgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBh
Y2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KICAg
ICB9OwpAQCAtMzgxLDYgKzQwMSw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpCkBAIC0zODgsMTEgKzQxMCwx
NCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCB2
aXNpdENoaWxkcmVuQ29tbW9uKFNsb3RWaXNpdG9yJik7CisgICAgICAgIAogICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBB
U1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAl
IHNpemVvZihkb3VibGUpKSk7Ci0gICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCkt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdl
Q2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5pbmxpbmVD
YXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQo
dGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0K
IApAQCAtNDAwLDEzICs0MjUsMTMgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
ICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKKyAgICAgICAgICAgIDogSlNPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU09iamVjdDo6U3RydWN0
dXJlRmxhZ3M7CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGluZVN0
b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHldOworICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtJTkxJTkVfU1RPUkFHRV9DQVBB
Q0lUWV07CiAgICAgfTsKIAogaW5saW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNDMxLDkgKzQ1
Niw5IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3QKICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSk7CiB9CiAK
LWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkKK2lubGlu
ZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpCiB7Ci0gICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpOworICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fb3V0T2ZMaW5lU3RvcmFnZSk7CiB9CiAK
IGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKQpAQCAtNDcxLDE0
ICs0OTYsMTggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFsVGhpcygpIGNvbgogICAg
IHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xvYmFsVGhpc1R5cGU7
CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSk7
Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkKLSAgICAgICAg
ICAgfHwgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8gJiYgc3RhdGljX2Nh
c3Q8dm9pZCo+KHN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpKTsKKyAg
ICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9
CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7Ci0gICAgbV9wcm9wZXJ0
eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0b3JhZ2UpOworICAgIG1fb3V0T2ZMaW5l
U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CiB9CiAKIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKQEAgLTUxNiw5ICs1NDUsOSBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpT
VmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAot
aW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKK2lubGluZSBK
U09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX3By
b3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCBpbmxpbmVTdG9yYWdlKQorICAgICwgbV9v
dXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIDApCiB7CiB9CiAKQEAgLTU0MiwxOSAr
NTcxLDYgQEAgaW5saW5lIFN0cnVjdHVyZSogSlNPYmplY3Q6OmluaGVyaXRvcklEKAogICAgIHJl
dHVybiBjcmVhdGVJbmhlcml0b3JJRChnbG9iYWxEYXRhKTsKIH0KIAotaW5saW5lIHNpemVfdCBT
dHJ1Y3R1cmU6OmlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0Ci17Ci0gICAgaWYgKGNsYXNz
SW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCi0gICAgICAgIHJldHVybiBKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5l
IGJvb2wgU3RydWN0dXJlOjppc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkp
OwotICAgIHJldHVybiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VD
YXBhY2l0eSgpOwotfQotCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNz
SW5mbyogaW5mbykgY29uc3QKIHsKICAgICByZXR1cm4gY2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NP
ZihpbmZvKTsKQEAgLTYxMSwxMCArNjI3LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6
OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Q
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYg
KCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAm
JiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSkgewotICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2goKQorICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCiAgICAgICAgICAgICA/IHN0cnVj
dHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQog
ICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7
Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNl
dCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5s
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKQEAgLTY3Niw4ICs2OTIsOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBjdXJyZW50U3Bl
Y2lmaWNGdW5jdGlvbjsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNp
ZmljRnVuY3Rpb24pOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlv
bik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBu
b3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZm
ZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1
bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkK
QEAgLTcwMCwxMyArNzE2LDE0IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCgKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2Ug
bmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCkt
PnB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkpCi0gICAgICAgICAgICBuZXdTdG9yYWdlID0g
Z3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNp
emUoKSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3Rv
cmFnZSgpOworICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3Rv
cmFnZSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAg
ICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVy
ZSgpKTsKIAotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlKCktPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIHB1
dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2Vl
IGNvbW1lbnQgb24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVj
aWZpY0Z1bmN0aW9uKQpAQCAtNzE0LDE1ICs3MzEsMTYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBz
aXplX3Qgb2Zmc2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Cisg
ICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0
eSgpOwogICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSh0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpKSB7Ci0gICAgICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7IAotICAgICAg
ICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2Jh
bERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKLQotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKLSAgICAgICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5l
d1N0b3JhZ2UsIHN0cnVjdHVyZSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdl
ID0gb3V0T2ZMaW5lU3RvcmFnZSgpOyAKKyAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0g
Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworCisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNl
dCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cisg
ICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0
dXJlKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUp
OwogICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHByb3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNw
ZWNpZmljIHZhbHVlcyBhcmUgbm90IGN1cnJlbnRseSBjYWNoYWJsZSwKICAgICAgICAgLy8gc28g
bGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNoYWJsZSBzdGF0ZS4KQEAgLTczNCw3ICs3NTIsNyBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgdW5zaWduZWQg
Y3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsK
ICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
Y3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICBpZiAob2Zm
c2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
IHsKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVz
ICYgUmVhZE9ubHkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc2OCw3ICs3ODYs
OCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKGdsb2Jh
bERhdGEsIHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljRnVuY3Rpb24sIG9mZnNldCk7CiAgICAgCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0
KTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIHNl
dFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKTsKIAogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVl
KTsKQEAgLTc4MSwyMiArODAwLDIyIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbCgKIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2Nh
dGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBv
bGRDYXBhY2l0eSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKG9sZENh
cGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAg
QVNTRVJUKG9sZENhcGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CiAgICAgCi0gICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSkgeworICAgIGlmIChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5l
d1N0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUHJvcGVydHlT
dG9yYWdlIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKAotICAgICAgICBnbG9iYWxE
YXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3Ry
dWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVT
dG9yYWdlKAorICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEs
IG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpz
ZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CisgICAg
ICAgIGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1
Y3R1cmUpOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtODI0LDExICs4NDMsMTEgQEAgaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbAogaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1
dGVzICYgQWNjZXNzb3IpKTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3Bl
cnR5U3RvcmFnZSgpOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0
b3JhZ2UoKSkKLSAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgp
LT5zdWdnZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwotICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAg
c2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsK
KyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAg
ICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAg
ICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOworICAgIHNldE91dE9m
TGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogICAgIHB1
dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KIApAQCAtOTA2LDgg
KzkyNSw2IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXQKICAgICBh
c0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi0vLyAtLS0gSlNWYWx1ZSBpbmxpbmVz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogQUxXQVlTX0lOTElORSBKU09iamVjdCog
UmVnaXN0ZXI6OmZ1bmN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIWpzVmFsdWUoKSkKQEAgLTky
Miw2ICs5MzksMzIgQEAgQUxXQVlTX0lOTElORSBSZWdpc3RlciBSZWdpc3Rlcjo6d2l0aENhbAog
ICAgIHJldHVybiByOwogfQogCisvLyBUaGlzIGlzIGEgaGVscGVyIGZvciBwYXRjaGluZyBjb2Rl
IHdoZXJlIHlvdSB3YW50IHRvIGVtaXQgYSBsb2FkIG9yIHN0b3JlIGFuZAorLy8gdGhlIGJhc2Ug
aXM6CisvLyBGb3IgaW5saW5lIG9mZnNldHM6IGEgcG9pbnRlciB0byB0aGUgb3V0LW9mLWxpbmUg
c3RvcmFnZSBwb2ludGVyLgorLy8gRm9yIG91dC1vZi1saW5lIG9mZnNldHM6IHRoZSBiYXNlIG9m
IHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlLgoraW5saW5lIHNpemVfdCBvZmZzZXRSZWxhdGl2ZVRv
UGF0Y2hlZFN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc091dE9m
TGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworICAgIHJldHVybiBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLSBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KG9mZnNldCk7Cit9CisKK2lubGluZSBpbnQgaW5kZXhSZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAg
ICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KTsKKyAgICBBU1NFUlQo
IShKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgJSBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAvIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30K
KworaW5saW5lIGludCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
Cit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7
CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldElu
SW5saW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU09iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1Niwx
MCBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0CiAgICAgc2l6ZV90
IG51bUNhY2hlYWJsZVNsb3RzID0gMDsKICAgICBpZiAoIW8tPnN0cnVjdHVyZSgpLT5oYXNOb25F
bnVtZXJhYmxlUHJvcGVydGllcygpICYmICFvLT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpCiAgICAgICAgICYmICFvLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSAmJiAhby0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcygpKQotICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgp
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+
c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUoKTsKICAgICAKICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3Rz
KTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9w
ZXJ0eU5hbWVzLmRhdGEoKSk7CisgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3Jl
YXRpb24oZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG8pOwogCiAgICAgaWYgKG8tPnN0cnVj
dHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDEyICs0Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEpT
Q2VsbCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVh
dGUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSog
cHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCkKLSAgICAgICAg
ewotICAgICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgp
KSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIG51
bUNhY2hlYWJsZVNsb3QpOwotICAgICAgICAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7
Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAg
ICAgIApAQCAtNjMsMTEgKzU3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBi
b29sIGdldE9mZnNldChzaXplX3QgaSwgaW50JiBvZmZzZXQpCisgICAgICAgIGJvb2wgZ2V0T2Zm
c2V0KHNpemVfdCBpLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoaSA+PSBtX251bUNhY2hlYWJsZVNsb3RzKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIG9mZnNldCA9IGk7CisgICAgICAgICAgICBvZmZzZXQgPSBp
ICsgbV9vZmZzZXRCYXNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApA
QCAtODgsMTIgKzgyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlO
YW1lQXJyYXlEYXRhKQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIEpTT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlBy
b3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlE
YXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9qc1N0cmluZ3NTaXplOyArK2kpCiAgICAgICAgICAgICAgICAgbV9qc1N0cmluZ3Nb
aV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9w
ZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CisgICAgICAgICAgICBtX29mZnNldEJhc2Ug
PSBvYmplY3QtPnN0cnVjdHVyZSgpLT5maXJzdFZhbGlkT2Zmc2V0KCk7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6CkBAIC0xMDUsNiArMTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAg
ICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVTbG90czsKICAgICAgICAgdWludDMyX3QgbV9q
c1N0cmluZ3NTaXplOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldEJhc2U7CiAgICAg
ICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwogICAg
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShy
ZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw4IEBAIHZvaWQgSlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90
b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCkt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUp
OwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25s
eSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3
LDcgKzI5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4ganNBZGRTbG93Q2Fz
ZShjYWxsRnJhbWUsIHYxLCB2Mik7CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBub3JtYWxp
emVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgc2xv
dE9mZnNldCkKKyAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIHNsb3RPZmZzZXQpCiAgICAg
ewogICAgICAgICBKU0NlbGwqIGNlbGwgPSBiYXNlLmFzQ2VsbCgpOwogICAgICAgICBzaXplX3Qg
Y291bnQgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHJldmlzaW9uIDEyMTgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDYgQEAgc3RhdGljIHVuc2ln
bmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2VycwogICAgIHJldHVybiBjcHVzVG9Vc2U7CiB9CiAK
LQogT3B0aW9uczo6RW50cnkgT3B0aW9uczo6c19vcHRpb25zW09wdGlvbnM6Om51bWJlck9mT3B0
aW9uc107CiAKIC8vIFJlYWxpemUgdGhlIG5hbWVzIGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgpA
QCAtMTE5LDExICsxMTgsMTEgQEAgY29uc3QgT3B0aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNf
b3B0aQogdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKIHsKICAgICAvLyBJbml0aWFsaXplIGVh
Y2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgRk9S
X0VBQ0hfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXykgXAorI2RlZmluZSBGT1Jf
RUFDSF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfKSAgICBcCiAgICAgbmFtZV8o
KSA9IGRlZmF1bHRWYWx1ZV87CiAgICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3Vu
ZGVmIEZPUl9FQUNIX09QVElPTgotCisgICAgICAgIAogICAgIC8vIEFsbG93IGVudmlyb25tZW50
IHZhcnMgdG8gb3ZlcnJpZGUgb3B0aW9ucyBpZiBhcHBsaWNhYmxlLgogICAgIC8vIFRoZSBldm4g
dmFyIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgb3B0aW9uIHByZWZpeGVkIHdpdGgKICAgICAv
LyAiSlNDXyIuCkBAIC0xMzIsOSArMTMxLDEyIEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgp
CiAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksICJKU0NfIiAjbmFtZV8p
OwogICAgIEpTQ19PUFRJT05TKEZPUl9FQUNIX09QVElPTikKICN1bmRlZiBGT1JfRUFDSF9PUFRJ
T04KLSAgICAKICNlbmRpZiAvLyBSVU5fVElNRV9IRVVSSVNUSUNTCiAKKyNpZiAwCisgICAgOyAv
LyBEZWNvbmZ1c2UgZWRpdG9ycyB0aGF0IGRvIGF1dG8gaW5kZW50YXRpb24KKyNlbmRpZgorICAg
IAogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aGVyZSBuZWVkZWQgYW5kIG1ha2UgY29ycmVjdGlv
bnMgdG8gdGhlIG9wdGlvbnM6CiAgICAgQVNTRVJUKHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpKTsKICAgICBB
U1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpID49IHRocmVzaG9sZEZvck9w
dGltaXplU29vbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAj
ZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0
LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTcyLDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWdu
ZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAKIHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsK
ICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldDsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmll
cjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAg
ICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgU3RyaW5nSW1wbCoga2V5LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgOiBrZXkoa2V5KQogICAgICAg
ICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwgYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAt
MTc0LDggKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCB0byBtYWludGFpbiBhIGxpc3Qg
b2YgdW51c2VkIGVudHJpZXMgaW4gdGhlIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgdm9pZCBjbGVh
ckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBoYXNEZWxldGVkT2Zmc2V0KCk7Ci0gICAgdW5z
aWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldCh1bnNp
Z25lZCBvZmZzZXQpOworICAgIFByb3BlcnR5T2Zmc2V0IGdldERlbGV0ZWRPZmZzZXQoKTsKKyAg
ICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKKyAgICAKKyAg
ICBQcm9wZXJ0eU9mZnNldCBuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKTsKIAogICAgIC8vIENvcHkg
dGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhlIGNh
cGFjaXR5IHByb3ZpZGVkLgogICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weShKU0ds
b2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CkBAIC0yMzAs
NyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCogbV9pbmRleDsKICAgICB1bnNpZ25l
ZCBtX2tleUNvdW50OwogICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwotICAgIE93blB0cjwg
VmVjdG9yPHVuc2lnbmVkPiA+IG1fZGVsZXRlZE9mZnNldHM7CisgICAgT3duUHRyPCBWZWN0b3I8
UHJvcGVydHlPZmZzZXQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKIAogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBNaW5pbXVtVGFibGVTaXplID0gMTY7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEVtcHR5RW50cnlJbmRleCA9IDA7CkBAIC0yNjQsOSArMjY3LDkgQEAgaW5saW5lIFByb3BlcnR5
VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVs
ZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9m
ZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdl
dCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMp
KTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVy
dHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0yODgsOSAr
MjkxLDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0K
IAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1
bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdl
dCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBv
dGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRz
KQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25l
ZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFk
b3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7
CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjp+UHJvcGVydHlUYWJsZSgpCkBAIC00NjksMjAg
KzQ3MiwzMSBAQCBpbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpoYXNEZWxldGVkT2ZmCiAgICAg
cmV0dXJuIG1fZGVsZXRlZE9mZnNldHMgJiYgIW1fZGVsZXRlZE9mZnNldHMtPmlzRW1wdHkoKTsK
IH0KIAotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQor
aW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6OmdldERlbGV0ZWRPZmZzZXQoKQog
ewotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7CiAgICAgbV9k
ZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLWlu
bGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0
KQoraW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4pOworICAgICAgICBt
X2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4pOwog
ICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOwogfQogCitpbmxpbmUgUHJvcGVy
dHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChKU1R5cGUgdHlwZSkKK3sKKyAgICBp
ZiAoaGFzRGVsZXRlZE9mZnNldCgpKQorICAgICAgICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgp
OworICAgIAorICAgIGlmICh0eXBlID09IEZpbmFsT2JqZWN0VHlwZSkKKyAgICAgICAgcmV0dXJu
IHNpemUoKTsKKyAgICAKKyAgICByZXR1cm4gc2l6ZSgpICsgZmlyc3RPdXRPZkxpbmVPZmZzZXQ7
Cit9CisKIGlubGluZSBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFByb3BlcnR5VGFibGU6OmNv
cHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdD
YXBhY2l0eSkKIHsKICAgICBBU1NFUlQobmV3Q2FwYWNpdHkgPj0gbV9rZXlDb3VudCk7CkBAIC00
OTksNyArNTEzLDcgQEAgaW5saW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcgog
ewogICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2YoUHJvcGVydHlUYWJsZSkgKyBkYXRhU2l6ZSgp
OwogICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQotICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRl
ZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQpKTsKKyAgICAgICAgcmVzdWx0
ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICogc2l6ZW9mKFByb3BlcnR5T2Zmc2V0
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU9mZnNldF9oCisjZGVmaW5lIFByb3BlcnR5T2Zmc2V0
X2gKKworI2luY2x1ZGUgIkpTVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBJTkxJ
TkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBB
Q0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7CisKK3N0YXRpYyBj
b25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7CitzdGF0aWMgY29uc3QgUHJv
cGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gSU5MSU5FX1NUT1JBR0VfQ0FQQUNJ
VFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKKy8vIERlY2xhcmUgYWxsIG9mIHRoZSBmdW5jdGlvbnMg
YmVjYXVzZSB0aGV5IHRlbmQgdG8gZG8gZm9yd2FyZCBjYWxscy4KK2lubGluZSB2b2lkIGNoZWNr
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKTsKK2lubGluZSB2b2lkIHZhbGlkYXRl
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKTsKK2lubGluZSBib29sIGlzVmFs
aWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBib29sIGlzSW5saW5lT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0
b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgc2l6ZV90IG9mZnNl
dEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKK2lubGluZSBzaXpl
X3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSk7CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpOworaW5s
aW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IoSlNUeXBlIHR5cGUpOwor
CitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0
KTsKK30KKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBK
U1R5cGUgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFS
QU0odHlwZSk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NF
UlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9i
amVjdFR5cGUKKyAgICAgICAgICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisK
K2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICBjaGVja09mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
OworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNT
RVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7Cisg
ICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lu
bGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zm
c2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitp
bmxpbmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7Cisg
ICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNl
dCk7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChp
c0lubGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUg
c2l6ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7
CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZz
ZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0Owor
fQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQoreworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICBy
ZXR1cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0
T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBj
aGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNl
dCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5l
T2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0
KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAg
ICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zv
ckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9w
ZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAg
IGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RU
eXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRP
ZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAgIHJldHVy
biBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIx
ODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAg
ICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0
eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29m
ZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1f
dmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1
ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAg
ICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAg
ICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0
ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQp
CisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBK
U09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0g
R0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFz
ZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUu
CiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0
byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3Jp
dGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBtX29mZnNl
dCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVu
Y2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVl
OwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9v
ZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsK
ICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0
eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQ
cm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAg
ICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9w
ZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29mZnNldCA9
IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmpl
Y3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNP
YmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAg
ICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAt
NjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNo
ZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBz
aXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAg
ICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAg
ICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3RydWN0dXJl
OjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFs
RGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAg
ICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwg
bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkgPyBKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNldChub09m
ZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0KGludmFs
aWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAg
ICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRo
aXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1fdHJhbnNp
dGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRP
ZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1f
ZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3Bl
cnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2Up
CkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPnN0b3Jl
ZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQog
ICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAg
ICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBh
Y2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0KGludmFs
aWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlL
aW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dl
dHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwog
ICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAgICAgICAg
ICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9i
YWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0g
c3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZT
bG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9wcm9wZXJ0
eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOworICAgICAg
ICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwg
bV90eXBlSW5mby50eXBlKCkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVz
LnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVy
ZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0
T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYg
KCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50
Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAg
IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5l
eHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90
IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAg
ICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZM
aW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25h
cnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2
aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNp
ZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZz
ZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0
LCBzdHJ1Y3R1cmUtPm1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3Rp
bmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlv
bjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHdlIG1heSBoYXZl
IGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRp
b24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAg
LTMyNyw4ICszMjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lm
aWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOwotICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJh
bnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHRyYW5zaXRp
b24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICBpZiAodHJhbnNpdGlv
bi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAg
ICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICBy
ZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAgICAgCkBAIC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgfQogCiAgICAgb2Zmc2V0
ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0
eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQot
ICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBp
ZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSkKKyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAK
ICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJh
bnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICByZXR1cm4gdHJh
bnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlP
ZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjpmbGF0dGVuRGljdGlvbmFyeVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1f
cHJvcGVydHlUYWJsZS0+c2l6ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHBy
b3BlcnR5Q291bnQpOwotCisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1f
dHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0g
bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVy
YXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
LCArK2kpIHsKICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0
KGl0ZXItPm9mZnNldCk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFibGUgdG8g
aGF2ZSB0aGUgbmV3IHByb3BlcnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9
IGk7CisgICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5IHZhbHVl
cyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RP
ZmZzZXQoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ldKTsKIAog
ICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICB9CkBA
IC01NjgsNyArNTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5
UwogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQor
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9l
bnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAgc2l6ZV90
IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6ZSgpID4g
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAg
IGlmIChvdXRPZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICBncm93
T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAg
LTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRU
CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxE
YXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlO
YW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVydHlOYW1l
KTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBAQCBQYXNz
T3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVy
dHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBhZG9wdFB0
cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwg
Km1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNl
dCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUg
PyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkg
OiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwg
bV90eXBlSW5mby50eXBlKCkpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9w
cm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0
dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJv
cGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlmICghZW50
cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxp
ZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAgICBzcGVj
aWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSArNjg1LDkg
QEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAgICBpdGVy
LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNp
ZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNldChnZXQo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwog
ICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBAIHNpemVf
dCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJvcGVydHlU
YWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVkIG5ld09m
ZnNldDsKLQotICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAg
ICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0g
ICAgZWxzZQotICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRPZmZzZXQo
bV90eXBlSW5mby50eXBlKCkpOwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlN
YXBFbnRyeShnbG9iYWxEYXRhLCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSkpOwogCkBAIC03MTEsNyArNzA2LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0
U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBT
dHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3MTksNyBAQCBzaXplX3QgU3RydWN0dXJl
OjpyZW1vdmUoUHJvcGVydHlOYW1lIHByCiAgICAgaWYgKCFwb3NpdGlvbi5maXJzdCkKICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0
LT5vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9m
ZnNldDsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAgICBtX3By
b3BlcnR5VGFibGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjE4MDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAt
ODcsOSArODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KTsKKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCk7CiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAz
LDMyICsxMDMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNGcm96ZW4oSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4g
IW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAgICAgYm9vbCBkaWRUcmFuc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9Ci0gICAgICAgIGJvb2wgcHV0V2lsbEdyb3dQ
cm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICBib29sIHB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFn
ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpID49IHByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQob3V0T2ZM
aW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXplKCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUp
OwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gbnVtYmVy
T2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICAgICAgICAg
IEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gb3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAg
ICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxl
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZS0+aGFzRGVsZXRlZE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
Pj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVy
dHlUYWJsZS0+c2l6ZSgpID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAg
ICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUo
KSk7CisgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gdG90YWxT
dG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
aXplX3Qgc3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpOyAKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgp
OyAKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAK
LSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2
b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMs
IHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29u
c3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAg
LTE0OSwxOCArMTQ5LDExNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hh
aW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgU3RydWN0
dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1
cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1f
cHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFu
c2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKIAotICAgICAgICB2b2lk
IGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAg
ICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBt
X3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAgICBzaXplX3QgaW5saW5lU3RvcmFnZUNhcGFj
aXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsK
LQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIHVuc2lnbmVkIG91dE9m
TGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX291
dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNp
emVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXpl
ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAg
ICAgaWYgKHRvdGFsU2l6ZSA8IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1i
ZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAg
ICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmluYWxPYmplY3QoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgIT0gRmlu
YWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1f
b2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5
U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9
IHRoaXMtPmlubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA8
IGlubGluZUNhcGFjaXR5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lQ2FwYWNpdHk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
bV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3R5cGVJbmZvLnR5cGUoKSA9PSBG
aW5hbE9iamVjdFR5cGU7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNp
dHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplRm9y
S25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0OworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX29mZnNldCArIDE7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0ID4gaW5saW5lU3RvcmFnZUNhcGFjaXR5KQorICAgICAgICAg
ICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemUoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTaXplRm9yS25vd25G
aW5hbE9iamVjdCgpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZVNp
emUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNp
emUoKTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV90eXBlSW5mby50eXBlKCkpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHRv
dGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVy
biBtX291dE9mTGluZUNhcGFjaXR5ICsgaW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAg
ICAgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZzZXQoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgc2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICghaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAg
ICAgICAgICAgICAgICBzaXplICs9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2l6ZSAtIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bV9vZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG9mZnNl
dCA+PSBmaXJzdFZhbGlkT2Zmc2V0KCkKKyAgICAgICAgICAgICAgICAmJiBvZmZzZXQgPD0gbGFz
dFZhbGlkT2Zmc2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQo
SlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICAgICAg
Ym9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzUmVhZE9ubHlPckdldHRlclNl
dHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVhZE9u
bHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bzsgfQpAQCAtMTc3LDcgKzI3
MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc05vbkVudW1lcmFibGVQ
cm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllczsg
fQogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09m
ZnNldDsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiAhSlNDOjppc1ZhbGlkT2Zm
c2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZvaWQgZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9z
cGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291
bnQ7IH0KQEAgLTI3Myw4ICszNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfSBEaWN0
aW9uYXJ5S2luZDsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9EaWN0aW9uYXJ5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5S2luZCk7CiAKLSAgICAg
ICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXpl
X3QgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHB1dFNwZWNp
ZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmUo
UHJvcGVydHlOYW1lKTsKIAogICAgICAgICB2b2lkIGNyZWF0ZVByb3BlcnR5TWFwKHVuc2lnbmVk
IGtleUNvdW50ID0gMCk7CiAgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMzAx
LDcgKzQwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgdHJhbnNpdGlvbkNvdW50
KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgLy8gU2luY2UgdGhlIG51bWJlciBvZiB0
cmFuc2l0aW9ucyBpcyBhbHdheXMgdGhlIHNhbWUgYXMgbV9vZmZzZXQsIHdlIGtlZXAgdGhlIHNp
emUgb2YgU3RydWN0dXJlIGRvd24gYnkgbm90IHN0b3JpbmcgYm90aC4KLSAgICAgICAgICAgIHJl
dHVybiBtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCArIDE7CisgICAgICAgICAg
ICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8u
dHlwZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAtMzEwLDggKzQx
MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhU
cmFuc2l0aW9uTGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBub09mZnNl
dCA9IC0xOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CkBAIC0z
MzYsMTAgKzQzNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIG11dGFi
bGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogCi0gICAg
ICAgIHVpbnQzMl90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIHVpbnQzMl90
IG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNj
b3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGludCBtX29mZnNldDsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5
S2luZCA6IDI7CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwpAQCAt
MzUzLDI2ICs0NTIsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Rh
dGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVy
ZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKKyAgICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAo
IW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAg
ICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVu
dHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0g
ICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAg
cmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogCi0g
ICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVy
ZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7
CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
ICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91
bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZFdpdGhTdHJpbmcobmFtZS5p
bXBsKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90
Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zm
c2V0OwogICAgIH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVP
clVuZGVmaW5lZCgpIGNvbnN0Cg==
</data>
<flag name="commit-queue"
          id="158963"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150701</attachid>
            <date>2012-07-03 18:03:35 -0700</date>
            <delta_ts>2012-07-04 00:47:29 -0700</delta_ts>
            <desc>it works on x86-32, x86-64, and classic interpreter</desc>
            <filename>overflowstorage_patch_13.diff</filename>
            <type>text/plain</type>
            <size>255465</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyOSBA
QAorMjAxMi0wNy0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgorICAg
ICAgICAoQ29udmVydGlibGVMb2FkTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbDo6Q29udmVydGlibGVMb2FkTGFiZWwpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJl
bDo6aXNTZXQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpsYWJlbEln
bm9yaW5nV2F0Y2hwb2ludHMpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpyZXBsYWNlV2l0aExvYWQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL0Nv
ZGVMb2NhdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNvbW1v
bik6CisgICAgICAgIChDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQpOgorICAgICAgICAoSlND
OjpDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQ6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6Y29udmVydGlibGVMb2FkQXRP
ZmZzZXQpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChMaW5r
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Ojpjb252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJY
ODYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydGlibGVMb2FkUHRyKToKKyAgICAg
ICAgKE1hY3JvQXNzZW1ibGVyWDg2XzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRjaEJ1
ZmZlci5oOgorICAgICAgICAoUmVwYXRjaEJ1ZmZlcik6CisgICAgICAgIChKU0M6OlJlcGF0Y2hC
dWZmZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnJl
cGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZl
cjo6c2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQp
OgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpy
ZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEdldEJ5SWRPcCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKEdldEJ5SWRT
dGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQp
OgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OlB1
dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpvZmZzZXQpOgorICAg
ICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0
YXR1cy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAgICAg
IChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAg
ICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUmVzb2x2ZUds
b2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0Lmg6CisgICAgICAg
IChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEJ5dGVDb2Rl
UGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBp
bGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5oOgorICAgICAgICAoSlNDOjpERkc6OlByb3BlcnR5QWNjZXNzUmVjb3JkOjpQcm9wZXJ0eUFj
Y2Vzc1JlY29yZCk6CisgICAgICAgIChQcm9wZXJ0eUFjY2Vzc1JlY29yZCk6CisgICAgICAgICog
ZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1JlcGF0Y2hCeUlkU2Vs
ZkFjY2Vzcyk6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1
Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6
REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZEdl
dEJ5SURQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRSZXBsYWNlU3R1Yik6
CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKToKKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUJ1aWxkUHV0
QnlJZExpc3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvTWFy
a1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5
Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRvU3R1
YkluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvOjpQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8pOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVHZXRCeUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkUHJv
dG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpJVCk6CisgICAgICAgICog
aml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVC
YXNpY0pTT2JqZWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21l
dGhvZF9jaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlk
U2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21ldGhvZF9jaGVjayk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVB1dERpcmVjdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hQ
dXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZ1bmN0aW9uTmFtZU9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFBy
b3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJl
Y3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5saW5lU3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlVW5zYWZlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b3V0
T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRGb3JMb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFVuZGVmaW5l
ZEF0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFkZHJlc3NPZk91dE9m
TGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNG
aW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9iamVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpKU09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RH
ZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3Rv
cmFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6aW5kZXhSZWxhdGl2ZVRvQmFzZSk6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAg
ICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmdldE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9P
cGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oOgorICAgICAgICAoUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5TWFwRW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoUHJvcGVydHlUYWJs
ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlUYWJsZTo6c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5T2Zmc2V0
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Y2hlY2tPZmZzZXQpOgor
ICAgICAgICAoSlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzVmFsaWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzT3V0
T2ZMaW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKToKKyAg
ICAgICAgKEpTQzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6b2Zm
c2V0SW5SZXNwZWN0aXZlU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0T2ZMaW5l
U2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zvckxhc3RP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAgICAgICAo
SlNDOjpmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVNsb3Q6OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNs
b3Q6OmNsZWFyT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgor
ICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHV0UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6
ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0
eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNp
dHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQaW5u
aW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0
T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Om91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpvdXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJbmxp
bmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnRvdGFsU3RvcmFnZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRvdGFs
U3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmaXJzdFZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpsYXN0VmFsaWRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25Db3VudCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAxMi0wNy0wMyAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmg6IEhhc2ggQ29uc3QgSlNT
dHJpbmcgaW4gQmFja2luZyBTdG9yZXMgdG8gU2F2ZSBNZW1vcnkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
NTgyLDYgKzU4Miw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5T2Zmc2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0LmggXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkxQTFD
RTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fz
c2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGRjQyNzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZFMTU5
Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZGNDI3
NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlG
RiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5
T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0
MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsg
fTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkwMDRD
QjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0
eU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEy
NEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAv
KiBERkdDRkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdDRkFQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNyw2
ICsyMTA5LDcgQEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1l
LmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5
LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJy
YXkuaCAqLywKKwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQu
aCAqLywKIAkJCQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAq
LywKIAkJCQk2NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8sCiAJ
CQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEsNiAr
MjgxNCw3IEBACiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29s
dmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhG
NURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUs
MzYgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIG1fbGFi
ZWw7CiAgICAgfTsKKyAgICAKKyAgICAvLyBDb252ZXJ0aWJsZUxvYWRMYWJlbDoKKyAgICAvLwor
ICAgIC8vIEEgQ29udmVydGlibGVMb2FkTGFiZWwgcmVjb3JkcyBhIGxvYWRQdHIgaW5zdHJ1Y3Rp
b24gdGhhdCBjYW4gYmUgcGF0Y2hlZCB0byBhbiBhZGRQdHIKKyAgICAvLyBzbyB0aGF0OgorICAg
IC8vCisgICAgLy8gbG9hZFB0cihBZGRyZXNzKGEsIGkpLCBiKQorICAgIC8vCisgICAgLy8gYmVj
b21lczoKKyAgICAvLworICAgIC8vIGFkZFB0cihUcnVzdGVkSW1tUHRyKGkpLCBhLCBiKQorICAg
IGNsYXNzIENvbnZlcnRpYmxlTG9hZExhYmVsIHsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVGVt
cGxhdGVBc3NlbWJsZXJUeXBlPgorICAgICAgICBmcmllbmQgY2xhc3MgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CisgICAgICAgIAorICAg
IHB1YmxpYzoKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwoKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsKEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT4qIG1hc20pCisgICAgICAgICAgICA6IG1fbGFiZWwo
bWFzbS0+bV9hc3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkpCisgICAgICAgIHsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFiZWwuaXNTZXQoKTsgfQorICAgIHByaXZhdGU6CisgICAgICAgIEFzc2VtYmxlckxhYmVs
IG1fbGFiZWw7CisgICAgfTsKIAogICAgIC8vIERhdGFMYWJlbFB0cjoKICAgICAvLwpAQCAtNTYy
LDYgKzU5MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJs
ZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQorI2Vsc2UKKyAgICBMYWJlbCBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGxhYmVsKCk7CisgICAgfQogI2VuZGlmCiAgICAgCiAgICAgTGFiZWwg
bGFiZWwoKQpAQCAtNjcyLDYgKzcwNywxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBy
ZXR1cm4gQXNzZW1ibGVyVHlwZTo6cmVhZFBvaW50ZXIoZGF0YUxhYmVsUHRyLmRhdGFMb2NhdGlv
bigpKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlclR5
cGU6OnJlcGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9jYXRpb24oKSk7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKENvZGVMb2NhdGlv
bkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlclR5cGU6OnJl
cGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQCBjbGFzcyBDb2RlTG9jYXRpb25OZWFyQ2FsbDsKIGNsYXNzIENvZGVM
b2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q7CiBjbGFzcyBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMjsK
IGNsYXNzIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjsKK2NsYXNzIENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZDsKIAogLy8gVGhlIENvZGVMb2NhdGlvbiogdHlwZXMgYXJlIGFsbCBwcmV0dHkg
bXVjaCBkby1ub3RoaW5nIHdyYXBwZXJzIGFyb3VuZAogLy8gQ29kZVB0ciAob3IgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyLCB0byBnaXZlIGl0IGl0cyBmdWxsIG5hbWUpLiAgVGhlc2UKQEAgLTYyLDYg
KzYzLDcgQEAgcHVibGljOgogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBkYXRhTGFiZWxQ
dHJBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBkYXRh
TGFiZWwzMkF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbENv
bXBhY3QgZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KGludCBvZmZzZXQpOworICAgIENvZGVMb2Nh
dGlvbkNvbnZlcnRpYmxlTG9hZCBjb252ZXJ0aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KTsK
IAogcHJvdGVjdGVkOgogICAgIENvZGVMb2NhdGlvbkNvbW1vbigpCkBAIC0xNDYsNiArMTQ4LDE1
IEBAIHB1YmxpYzoKICAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGxvY2F0aW9uKSkge30KIH07CiAKK2NsYXNzIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxl
TG9hZCA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb24geworcHVibGljOgorICAgIENvZGVMb2Nh
dGlvbkNvbnZlcnRpYmxlTG9hZCgpIHsgfQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbG9jYXRpb24pCisgICAgICAgIDogQ29k
ZUxvY2F0aW9uQ29tbW9uKGxvY2F0aW9uKSB7IH0KKyAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQodm9pZCogbG9jYXRpb24pCisgICAgICAgIDogQ29kZUxvY2F0aW9uQ29t
bW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpIHsgfQorfTsKKwogaW5saW5lIENv
ZGVMb2NhdGlvbkluc3RydWN0aW9uIENvZGVMb2NhdGlvbkNvbW1vbjo6aW5zdHJ1Y3Rpb25BdE9m
ZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQp
OwpAQCAtMTk0LDYgKzIwNSwxMiBAQCBpbmxpbmUgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFj
dCBDb2RlCiAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3QocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKIH0KIAoraW5saW5lIENv
ZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxl
TG9hZEF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VU
KG9mZnNldCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZChyZWludGVy
cHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxDb21wYWN0OwogICAg
IHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJlbDMyOwogICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQdHI7CisgICAgdHlw
ZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29udmVydGlibGVMb2Fk
TGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgIHR5cGVkZWYgTWFjcm9B
c3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpAQCAtMTgwLDYgKzE4MSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0KE1hY3JvQXNz
ZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9sYWJl
bCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgbG9jYXRpb25P
ZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb2Rl
TG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJlc3Mo
Y29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOworICAgIH0KKwogICAgIC8vIFRo
aXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBjYWxsLCBnaXZlbiBh
cyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgY29kZS4KICAgICB1bnNp
Z25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2FsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9u
IDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTMgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZsX21yKGFkZHJlc3MsIGRlc3QpOwogICAgIH0KIAorICAgIENvbnZl
cnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9
IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX21y
KGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
LCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNkX21y
KGFkZHJlc3MubV9wdHIsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsK
ICAgICB9CiAKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBDb252ZXJ0aWJs
ZUxvYWRMYWJlbCByZXN1bHQgPSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICB2b2lkIGxvYWRQdHIoQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw2ICsxMjIsMjQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVsaW5rTmVhckNhbGxlclRv
VHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChuZXdDYWxsZWVGdW5j
dGlvbikpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9jYXRp
b25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9pZCByZXBsYWNlV2l0
aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisg
ICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRp
b24obGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldExvYWRJbnN0cnVjdGlvbklzQWN0
aXZlKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCwgYm9vbCBpc0FjdGl2ZSkKKyAg
ICB7CisgICAgICAgIGlmIChpc0FjdGl2ZSkKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoTG9hZChs
YWJlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1
dGF0aW9uKGxhYmVsKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCogbV9zdGFydDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgzOSw2ICsxODM5LDQyIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIDU7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCog
cHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYg
Q1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAg
ICAgICAgcHRyKys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNh
c2UgT1BfTU9WX0d2RXY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPUF9MRUE6
CisgICAgICAgICAgICAqcHRyID0gT1BfTU9WX0d2RXY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1
dGF0aW9uKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90KiBw
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBD
UFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAg
ICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2Fz
ZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAgICpwdHIgPSBPUF9MRUE7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBPUF9MRUE6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgfQorICAgIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2Vt
YmxlckxhYmVsIGNhbGwpCiAgICAgewogICAgICAgICBBU1NFUlQoY2FsbC5pc1NldCgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw5IEBAIHZvaWQgQ29kZUJsb2NrOjpw
cmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAg
b3AgPSAiZ2V0X2J5X2lkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9nZXRfYnlfaWRf
b3V0X29mX2xpbmU6CisgICAgICAgIG9wID0gImdldF9ieV9pZF9vdXRfb2ZfbGluZSI7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3NlbGY6CiAgICAgICAgIG9wID0gImdl
dF9ieV9pZF9zZWxmIjsKICAgICAgICAgYnJlYWs7CkBAIC0xMDMzLDYgKzEwMzYsNyBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9n
ZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3NlbGY6CiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZF9jaGFpbjoKQEAgLTEwNTksNiArMTA2MywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfb3V0X29mX2xpbmUiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Jl
cGxhY2U6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF9yZXBsYWNlIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsMTAgKzEw
NzksMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZTogeworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTogeworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmlu
dFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMDI5LDcgKzIwNDUsOSBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1
Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07
CiAgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVj
dGlvblswXS51Lm9wY29kZSkpIHsKICAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAg
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5l
OgogICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwg
SGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKQEAgLTIwMzksNiArMjA1Nyw4IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICAgICAgICAgIGlmIChIZWFw
Ojppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAg
ICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1
cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZyb20KICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAg
ICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0KAorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIGZhbHNlKTsKICAgICAKICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGUs
IGZhbHNlLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yQ2hhaW4oR2V0
QgogICAgICAgICAKICAgICByZXN1bHQubV9vZmZzZXQgPSBjdXJyZW50U3RydWN0dXJlLT5nZXQo
CiAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVz
SWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBub3RG
b3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVy
ZSk7CkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJ
Z25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9v
ZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1f
b2Zmc2V0KSkgewogICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1
cmUpOwogICAgICAgICAgICAgcmVzdWx0Lm1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoc3BlY2lm
aWNWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9vZmZz
ZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNl
dCkpCiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3NiwxMCArMTc2LDEwIEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7Ci0gICAgICAgICAgICBzaXplX3QgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAg
ICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJ
Z25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG15
T2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQobXlP
ZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90Rm91bmQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xOTYsNyArMTk2LDcgQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgcmVz
dWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAg
ICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zmc2V0
KHJlc3VsdC5tX29mZnNldCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYg
KHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCkgeworICAgIGlmICghaXNWYWxpZE9mZnNldChy
ZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gVGFrZXNTbG93UGF0
aDsKICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7CiAgICAgICAgIHJlc3Vs
dC5tX2NoYWluLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgR2V0QnlJZFN0YXR1c19oCiAjZGVmaW5lIEdldEJ5SWRTdGF0dXNf
aAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQu
aCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIApAQCAtNDYsMTMgKzQ3LDEzIEBAIHB1Ymxp
YzoKIAogICAgIEdldEJ5SWRTdGF0dXMoKQogICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlv
bikKLSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZh
bGlkT2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgR2V0QnlJZFN0YXR1cygKICAgICAg
ICAgU3RhdGUgc3RhdGUsIGJvb2wgd2FzU2VlbkluSklULCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0
cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNldCgpLAotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbm90
Rm91bmQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVjdHVy
ZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCisgICAgICAgIHNpemVfdCBvZmZzZXQg
PSBpbnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3Rv
cjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQogICAgICAgICA6IG1f
c3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAg
ICAgICAsIG1fY2hhaW4oY2hhaW4pCkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJl
U2V0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYgdGhpcyBpcyBhIGRpcmVj
dCBhY2Nlc3MuCiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9z
cGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNWYWx1ZSgpIGlmIHRoZXJlIGlzIG5vIHNwZWNp
ZmljIHZhbHVlLgotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CiAgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5J
bkpJVDsgfQogICAgIApAQCAtODgsNyArODksNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZVNl
dCBtX3N0cnVjdHVyZVNldDsKICAgICBWZWN0b3I8U3RydWN0dXJlKj4gbV9jaGFpbjsKICAgICBK
U1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9y
ZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAg
IG1hY3JvKG9wX3Jlc29sdmVfd2l0aF90aGlzLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICov
IFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX291dF9vZl9saW5lLCA5KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDkp
IC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRf
cHJvdG8sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9n
ZXRfYnlfaWRfY2hhaW4sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApAQCAtMTIyLDkg
KzEyMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3N0cmluZ19s
ZW5ndGgsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9n
ZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkp
IFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2Vu
ZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlz
aW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwog
ICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWQpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJs
b2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAs
IDAsIG5vdEZvdW5kKTsKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRf
b3BfcHV0X2J5X2lkCisgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50
X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7
CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAg
ICAgICAgIAogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1
Y3R1cmUsIDAsIDAsIG9mZnNldCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3LDE4IEBAIFB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NFUlQoc3RydWN0dXJlLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0Ci0gICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgIHx8IGluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUKKyAgICAgICAgICAgfHwgaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
X291dF9vZl9saW5lKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3Ry
dWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9
IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAgICAgQVNTRVJUKG5ld1N0
cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNoYWluKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0g
bmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwot
ICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBp
ZGVudCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAg
IAogICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwg
bmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKICNlbHNlCkBAIC05NCwyNCArOTcsMjQgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICByZXR1cm4g
Y29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAg
ICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgIHNp
emVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1
cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRC
eUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlUmVwbGFjZSwK
ICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAgICAgICBvZmZz
ZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAgICAgICAKICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nl
c3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CiAgICAgICAgIEFTU0VSVChzdHViSW5m
by51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJl
LT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7
Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAg
ICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICBzdHViSW5mby51
LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLApAQCAtMTE5LDE0ICsx
MjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCksCiAgICAg
ICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAg
IH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
VGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAj
ZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5k
ZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5lIFB1dEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAi
UHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX29sZFN0cnVjdHVy
ZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKDApCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVD
aGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTY0LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiwK
LSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQog
ICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUob2xkU3Ry
dWN0dXJlKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTc0LDcg
Kzc1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlv
biB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09ICFtX29sZFN0cnVjdHVyZSk7CiAgICAg
ICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9uZXdTdHJ1Y3R1
cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1f
c3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlv
biB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBub3RGb3VuZCkp
OworICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09
IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQog
ICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOwpAQCAtOTAsNyArOTEsNyBAQCBwdWJs
aWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29sZFN0
cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4oKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNoYWluOyB9Ci0gICAgc2l6ZV90IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIFB1dEJ5
SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cnVj
dHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKICAg
ICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1cmVDaGFpbjsKLSAgICBzaXplX3QgbV9vZmZzZXQ7
CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2
ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTcgKzMyLDE5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgRU5BQkxFKExMSU5UKSB8
fCBFTkFCTEUoSklUKQogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cnVj
dHVyZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElkZW50aWZp
ZXImIGlkZW50aWZpZXIpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdl
dCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAg
KmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGVzSWdub3JlZCwg
c3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlz
VmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMo
KTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhSZXNvbHZlR2xvYmFsU3Rh
dHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsKIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpIHx8IEVOQUJMRShKSVQpCiAKIHN0YXRpYyBSZXNvbHZlR2xvYmFs
U3RhdHVzIGNvbXB1dGVGb3JMTEludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2
aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVH
bG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBS
ZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQ
cm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBSZXNvbHZl
R2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAgIFN0YXRlIHN0YXRlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZz
ZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSkKICAgICAgICAg
OiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKQEAgLTcw
LDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9CiAgICAgCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQotICAgIHNpemVfdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgU3Rh
dGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwotICAgIHNpemVfdCBtX29m
ZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBKU1ZhbHVlIG1fc3BlY2lm
aWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5zaXplKCk7IH0KICAgICAKLSAg
ICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJlc1tpXS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8vIENhbGwgdGhpcyBpZiB5b3Uga25vdyB0aGF0
IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lzdCBvZiBleGFjdGx5CiAgICAgLy8gb25lIHN0
cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvblN0cnVjdHVyZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7CiAgICAgICAg
ICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFI7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb0RvbmU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKICAg
ICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7CiAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNoZWNrSW1tVG9DYWxsOwpAQCAtMjE5LDYgKzIyMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQxNl90IHN0cnVjdHVyZUNoZWNrOworICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTIzMCw2
ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgfSBnZXQ7CiAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQx
Nl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
cHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhh
bmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihib29sIHVzZXNSZXN1bHQsIGludCByZXN1bHRP
cGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgIGlu
dCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAgICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBz
aXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKICAgICB2b2lk
IGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAg
ICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAg
ICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJh
c2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9w
ZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAg
ICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQs
CiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1f
Z3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vz
c0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0g
b2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGlu
ZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlm
aWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vz
c0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAg
ICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9v
bCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1w
dHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3Rh
dHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVj
dCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdl
dEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVU
cmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAg
IH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBn
ZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9y
YWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAg
ICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtl
cHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVH
ZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNl
LCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3Rh
dHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBi
YXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIxNjMs
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9u
KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAg
ICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5v
cGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9v
dXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0g
Z2V0KGdldEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBp
ZGVudGlmaWVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAgLTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U2Nv
cGVkVmFyLCBPcEluZm8oc2xvdCksIGdldFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2J5X2lkKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
OiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKQEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsK
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsK
LSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5v
ZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0
dXMub2xkU3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dy
YXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNl
dE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgp
KSwgcHJvcGVydHlTdG9yYWdlLCBiYXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAg
ICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQo
KSArIG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZz
ZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAg
ICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVy
TnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBl
bmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNp
dGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5z
aXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVj
dHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3Ry
dWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9
PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAg
ICAgICAgICAgICBiYXNlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXpl
X3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3Jh
Z2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPmlz
VXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09i
amVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9m
ZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFn
ZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAg
ICAgIFB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0
b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksCkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBz
dG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZz
ZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAg
ICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJ
ZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRl
bnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtMjczOCw4ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVy
ZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIs
IHN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhl
IHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBpbmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
OSArMTE5LDEzIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAg
ICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAg
ICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xp
bmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9i
YWxfdmFyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGluZm8u
cGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
Y2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vz
c2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRj
aC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1
cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5t
X2RvbmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9
IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7
CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9iYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZh
bHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAg
ICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxl
SnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxl
TG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciog
c2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApA
QCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1w
IHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2Fk
TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbENvbXBhY3QgdGFnTG9hZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxDb21wYWN0IHBheWxvYWRMb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0
b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApAQCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0
eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAg
ICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3RydWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJl
Q2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHBy
b3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRP
clN0b3JlKGxvYWRPclN0b3JlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsx
ODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9j
b2RlT3JpZ2luOwogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJ
bW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3Jh
Z2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bENvbXBhY3QgbV9sb2FkT3JTdG9yZTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2Nr
KiBjbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsK
IH0KIAotc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9v
bCBjb21wYWN0KQorc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0
aEZ1bmN0aW9uLCBib29sIGNvbXBhY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUyLDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBh
dGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNr
ICYgdGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qp
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAg
IHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICBpZiAoY29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5y
ZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNW
YWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShvZmZzZXQpKTsKICAgICBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9M
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUp
LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNW
YWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hl
ZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNo
LmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpT
VmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
OworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFn
TG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAg
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9h
ZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAg
IH0KICNlbmRpZgogfQpAQCAtMTA1LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3Jl
U2NyYXRjaChMaW5rQnVmZmUKICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5l
ZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb0RvbmUpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9p
ZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwg
c2l6ZV90IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1
Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmJiBzdHViUm91dGluZSkKK3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFj
Y2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENv
ZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1
YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKIApAQCAtMTM5LDEzICsxNDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90
b0NoYWluQWNjZXNzU3R1YgogICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAg
IH0KICAgICAKLSAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlByb3Bl
cnR5U3RvcmFnZSgpLCByZXN1bHRHUFIpOworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQp
KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBv
ZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAg
ICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmpl
Y3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0Lmxv
YWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BS
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0
KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1
bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2Vz
cywgZmFpbDsKICAgICAKQEAgLTI1Myw3ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdl
dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0g
UHJvcGVydHlTbG90OjpWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNp
emVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXpl
UHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5
TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zNDksMTIgKzM2MCwyMCBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNT
dGF0CiAgICAgICAgICAgICB8fCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5
U2xvdDo6Q3VzdG9tKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUo
KSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
R1BSICE9IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1Ykpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAg
ICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hH
UFIpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hl
ZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1
YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVs
YXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVy
YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtMzg1LDEzICs0MDQsMjcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChF
eGVjU3RhdAogICAgICAgICAgICAgaGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAg
ICAgICAgIHN0dWJKaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAg
ICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0
R1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BS
KSB7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRh
Z0dQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCByZXN1bHRHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1Ykpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRp
dmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAg
ICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BS
KTsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSks
IHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3Mg
PSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAg
fQpAQCAtNDUwLDcgKzQ4Myw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlz
dChFeGUKICAgICAKICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogICAg
IAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0g
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCks
IHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01NjcsNyArNjAwLDcgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHVi
KAogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0
Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1
cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52
YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVK
SVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9S
ZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAgICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsK
QEAgLTU4NiwyMCArNjE5LDIwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNl
bmRpZgogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlm
IChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5z
dG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5z
dG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zm
c2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJl
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
KTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90
LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFs
dWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBz
dHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAgQEAg
c3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQot
ICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5
U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkpIHsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnRhZykpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpIHsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZz
ZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2Ny
YXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BS
KTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAg
fQogI2VuZGlmCiAgICAgICAgICAgICAKQEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0
cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ug
d2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKQorICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihleGVjLCBiYXNlQ2VsbCk7CkBAIC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5
QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdo
ZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
IT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW4oZXhlYywgYmFzZUNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9D
b21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0g
bV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZl
cnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRo
Q29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXls
b2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpLCByZXN1bHRUYWdHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBh
eWxvYWRMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0
UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxv
YWRHUFIpOwogICAgIApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAg
ICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQs
CiAgICAgICAgICAgICB0YWdMb2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xv
d1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFz
ZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAg
ICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNj
cmF0Y2hHUFIpLApAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVU
YWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQ
Uik7CiAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2Fk
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwor
ICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
ID0gbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXls
b2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BS
KTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2pp
dC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKSk7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRT
dG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVl
UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01OTcs
NyArNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAg
IH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NS
ZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBz
dHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWxDb21wYWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNo
LmxhYmVsKCkpLAogICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNh
c3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwor
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAog
ICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAg
ICBicmVhazsKQEAgLTM4OTEsOCArMzg5MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RN
YXRjaCA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBheWxv
YWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAgICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVD
VF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsK
KyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
T3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVh
bCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsK
KyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZt
X2ppdCk7CisjZW5kaWYKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
LCByZXN1bHRUYWdHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJ
bmRleChyZXN1bHRQYXlsb2FkR1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRpbWVz
RWlnaHQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTcsNyArNDk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9D
b21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0g
bV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSks
IHJlc3VsdEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPQorICAgICAgICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgcmVzdWx0R1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2Fk
V2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAgICAg
SklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcsOCAr
NTE4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0K
ICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNv
cmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVy
ZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVM
YWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRH
UFIpLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAg
IHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNh
ZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4o
c2NyYXRjaEdQUiksCiAgICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6
UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJl
bGVhc2UoKSk7CkBAIC01MzYsNyArNTM3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
UHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1
ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0gICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQu
Y29udmVydGlibGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
MCkpOwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7
CkBAIC01NjYsNyArNTY4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU8KICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1
bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVy
TnVtYmVyKSk7CiAgICAgfQotICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNj
ZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ss
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBz
bG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOwor
ICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29y
ZCgKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRv
bmVMYWJlbCwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0
PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3
ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1
bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpF
Q1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIs
IHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworI2lm
IERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPdXRP
ZkxpbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBy
ZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAg
ICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0
KTsKKyNlbmRpZgorICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGds
b2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJl
c3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGluZVN0
b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhl
cml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3Qn
cyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0YWJs
ZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlvdSdy
ZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChj
ZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcg
KzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAg
ICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1
MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUs
IGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAg
aWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dl
bmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dp
dGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5F
X09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9n
ZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5
KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYgKzM1
MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6
CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09QQ09E
RShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlf
aWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIp
IG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICszNTY3
LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3Ry
dWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAg
ICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAg
aW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2
UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZz
ZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0z
NjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIEFT
U0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVl
ID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2
UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2Jq
ZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkp
OwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNW
YWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgp
OwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vi
c2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgs
IG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNW
YWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAg
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVG
SU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
OgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpA
QCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGlu
ZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0
dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRp
b24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5w
YXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0Y2gu
YmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51Lmdl
dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3Bl
cnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1dEJ5
SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFz
ZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5l
LnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNrOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBnZXREaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4
NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9U
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJl
Z2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVU
b0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
cHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
ZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNw
bGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNl
bWVudExhYmVsMiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExh
YmVsMiwKICNlbmRpZgorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3Vs
dCkKICAgICAgICAgICAgIDogbV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhC
ZWdpbikKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29t
cGFyZSkKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNw
bGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29t
cGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVy
dHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAgKQog
ICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2lu
KQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQp
CiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUp
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFiZWwo
ZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29t
cGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGpp
dChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZz
ZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9y
cGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5
bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0
ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBp
bGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVu
dEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2Fs
bEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENo
YWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNp
emVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0
Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAg
IGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50
LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVj
b2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50
LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAg
ICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1f
Ynl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0
QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZv
Kik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2Rl
YmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRC
eUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9i
YWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFk
ZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVD
b21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVm
Zm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwot
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVj
dHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1
cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1
Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1
Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3Qp
OwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNv
bXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVj
dHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9i
YWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9
CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtu
b3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1
bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsK
ICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQg
YmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAg
ICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQp
OwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNl
dCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAg
ICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRkMzJD
b25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1
bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZp
ZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVn
LCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQg
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJl
Z2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1l
dGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0
b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9y
YWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBzdG9y
YWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENs
YXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAgICAg
ICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAvLyBW
ZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBy
ZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBz
dHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1f
cHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgT0JK
RUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAgIGxv
YWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwogICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVOR1RI
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2ds
b2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBMb2Fk
IGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFs
d2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1Qw
KTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29s
dmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1QwLCBy
ZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdU
MCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2lu
ZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVy
cHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChv
cF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBt
X2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29tcGls
ZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAg
ICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7Cisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxl
TG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBs
b2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hH
ZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbENv
bXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNl
dFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7
IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJ
ZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNl
R2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5h
cHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1f
Ynl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3Vs
dCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3Bl
cnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBw
dXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJ
bnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkp
KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMy
IGRpc3BsYWNlbWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdU
MiwgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2Fk
CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVz
c09mZnNldFBhdGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zm
c2V0KSk7IC8vIHRhZwogICAgIApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJl
Z1QyLCByZWdUMSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8u
YXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBt
X2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxh
Y2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNz
Q29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVy
dHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxh
Y2VtZW50TGFiZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTQzMCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVU
YWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBl
bWl0U3RvcmUob2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAo
aXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IGVtaXRTdG9yZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2
YWx1ZVBheWxvYWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGlu
ZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVU
b0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQ
YXlsb2FkOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCBy
ZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhS
ZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRl
bXApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNz
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1
bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7
Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkg
eworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRh
ZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5
bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgp
LCByZXN1bHRUYWcpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBh
c3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250
YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShN
SVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9jYXRl
IHByb3BlcnR5IHN0b3JhZ2UgaWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAgICBi
b29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYg
KHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5lIHdh
cyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFnYWlu
IHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRo
ZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVkLgpA
QCAtNDk5LDcgKzUxMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAgc3R1
YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1
bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cihu
ZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3
ICs1NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBh
dGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0
byBKSVRTdHViczo6Y3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFu
eXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0Nh
bGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9p
ZF9zZWxmX2ZhaWwpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICog
Y2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2Vy
dHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9y
LgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVU
b0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwg
b2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcK
KyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNo
ZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsg
Ly8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNh
Y2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8v
IHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVC
bG9jayk7CiAgICAgCkBAIC01NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlk
UmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9w
dXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyBy
aWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dl
bmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0
ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9m
ZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUg
U3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxv
YWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1l
bnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUo
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+
aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90
UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
cHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAv
LyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0
X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03
MDAsNyArNzEwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgog
fQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEg
SlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3Ry
dWN0dXJlKTsKQEAgLTc2MCw3ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2Rl
TG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1
cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4MzksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5j
b2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdU
MCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNv
ZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQo
Y291bnQpOwpAQCAtOTc1LDEzICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihy
ZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsK
IH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0
ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAgQVNT
RVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBsb2Fk
UHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQdHIo
QmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1vZGUg
PT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1Ro
YW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxp
bmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAgICBs
b2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNlSW5k
ZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVzc0Zv
cihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3Rz
KSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1p
dFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
SW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9i
amVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoc2Ny
YXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVvZihK
U1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmlu
YWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmso
dGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0KKyAg
ICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3Rv
cmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9u
Kgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlv
biBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
KGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUu
b3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hl
Y2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVy
LT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRo
b2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAKICAg
ICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwog
ICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpAQCAtMzczLDE0ICszOTAsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aChp
bnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRTbG93
Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIENvbnZlcnRpYmxl
TG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDApOwog
ICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBh
Y3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9m
ZnNldCksIHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVORF9V
TklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdp
biwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWws
IHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5k
KFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVj
b2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hl
Y2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAt
NDQwLDE0ICs0NTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9u
KgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHJlZ1QyKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
ID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRM
YWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMSwgQWRkcmVzcyhyZWdU
MiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwogCiAgICAgRU5EX1VOSU5URVJSVVBURURf
U0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAs
IHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbklu
Zm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlk
LCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlz
cGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9i
eXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5
U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3Jl
IGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAv
LyB2YWx1ZSBpbiBvYmplY3RSZWcuCi12b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2
b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0
ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhi
YXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0
b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIG9mZnNldCkpOworICAgIGlmIChpc0lubGluZU9m
ZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJh
c2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAq
IG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNz
KGJhc2UsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRP
ZmZzZXQpKSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVy
dHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNo
ZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0g
ICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBy
ZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldCksIHJlc3VsdCk7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihK
U1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVzdWx0LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewot
ICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikpLCByZXN1bHQpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVk
T2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2Fk
UHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0
KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAg
ICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAt
NTIyLDcgKzU1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8K
ICNlbmRpZgogICAgIAogICAgIC8vIGVtaXQgYSBjYWxsIG9ubHkgaWYgc3RvcmFnZSByZWFsbG9j
IGlzIG5lZWRlZAotICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdlUmVhbGxvYykgewogICAgICAgICAvLyBU
aGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtlIGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBj
YW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAgICAgICAvLyByZW1vdmUgdGhlIHJldHVy
biBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2ZW50IHRoZSBzdGFjayBmcm9tIGJlY29t
aW5nIG1pc2FsaWduZWQuCkBAIC01MzIsNyArNTYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8g
YmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gaWRlbnQKICAgICAgICAg
c3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVlCi0gICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKHJl
Z1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJBcmcoMiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYw
Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICByZXBh
dGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9j
YXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklU
OjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2Vs
ZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KGNvZGVCbG9jayk7CiAKQEAgLTU4MCwxNCArNjEwLDEzIEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5
SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gY3RpX29w
X2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5n
IHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0
dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAot
ICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAv
LyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0
aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7
Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxh
YmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFj
ZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rp
b25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0
KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNP
dXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0
QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRC
eUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0
Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01OTUsMTEgKzYyNCwxMCBA
QCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxk
IHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBk
byBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0
aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMp
KTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0K
ICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBm
cm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVj
dHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4u
ZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxh
Y2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0
aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlz
T3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1Bh
dGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAg
LTY0Myw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3Ms
IEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90
eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29k
ZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVu
Y2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdz
IHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxs
ZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRf
cHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxp
c3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1w
IGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgYm9v
bCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVT
dHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBl
eGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBh
IFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmpl
Y3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEp
CkBAIC04MzksNyArODY3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9u
TGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAt
OTE0LDcgKzk0Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QK
ICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVs
KHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxODA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk1NCw3ICs5NTQsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hl
R2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5j
YWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxG
cmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
ICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHN0dWJJbmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNz
X2dldF9ieV9pZF9nZW5lcmljOwpAQCAtMTQ4NiwxMyArMTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIGludDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJh
bWUuYXJnc1szXS5pbnQzMigpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gc3RhY2tG
cmFtZS5hcmdzWzRdLnN0cnVjdHVyZSgpOwotICAgIGludDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpbnQzMl90IG5ld1NpemUgPSBu
ZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgCisgICAgQVNTRVJUKG9sZFNp
emUgPj0gMCk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIEFTU0VSVChi
YXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChiYXNl
VmFsdWUpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpzdGFja0ZyYW1lLmdsb2Jh
bERhdGE7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOwotICAgIGJhc2UtPnNldFBy
b3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CisgICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJu
IGJhc2U7CiB9CkBAIC0xODE0LDcgKzE4MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgpKTsK
ICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkp
OwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICBpZiAoc2xv
dC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29w
X2dldF9ieV9pZF9wcm90b19mYWlsKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIApAQCAtOTQwLDcgKzk0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFz
ZSgpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQ
cm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkg
eworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyAr
OTU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgp
KTsKICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
c3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAg
ICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5
cGVDaGFpbihleGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1
cmVDaGFpbi5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9v
dXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBw
Y1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20JKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5LDI0
IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2Jq
ZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3Rl
cSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0
QW5kU3RvcmFnZQorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdl
LCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCittYWNybyBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBh
eWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCAu
aXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFu
ZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgam1wIC5yZWFkeQorLmlzSW5saW5lOgor
ICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVTdG9yYWdlICsgSW5saW5lU3RvcmFnZUNh
cGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJlYWR5OgorICAgIGxvYWRpIFRhZ09mZnNl
dCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlP
ZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3Jh
Z2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQK
K2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5kcyBh
cmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpA
QCAtOTMwLDkgKzk0OCw3IEBAIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMTJbUENdLCBz
bG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCi0gICAg
bG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKQogICAgIGxvYWRpIDRbUENd
LCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMTAzLDQ0IEBAIF9sbGlu
dF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9v
cF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4gV2UgZG8sIGhvd2V2
ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNl
CisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdl
dF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2Fj
aGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisjIHdlIHdvdWxk
IGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9y
YWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMg
Z2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCi0gICAg
IyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBh
bnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJl
c3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKLSAgICAjIHRv
IHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBw
YXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5
LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQog
ICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
XSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0Miwg
dDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQz
LAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkK
KyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQorICAgICAgICAgICAgbG9hZGkgVGFn
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAgICAgICAgc3RvcmVp
IHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkaSAzMltQQ10sIHQxCisg
ICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAgICAgICAgICAgZGlz
cGF0Y2goOSkKKyAgICAgICAgZW5kKQorCisgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgZGlzcGF0Y2go
OSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElubGluZVN0
b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1OSw5NiBAQCBfbGxpbnRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3Bf
cHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5
SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAg
IHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAg
ICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNj
cmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3
cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFn
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisg
ICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0
aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5
SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9v
Zl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10s
IHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAu
b3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3Mo
dDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAg
ICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQyLCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBk
aXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAg
IHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAg
ICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwg
dDIpCisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxv
YWRpIDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10K
KyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxD
aGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWlu
Q2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRT
dHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHBy
b3RvCisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBi
dHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwg
b2sgZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQs
IHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChv
bGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihu
b0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAot
ICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAg
Y29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1
cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4
W1BDXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3Nj
cmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3Jh
dGNoLCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0g
ICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtv
bGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1
Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAg
ICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAg
cHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdl
KQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6
CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxp
bmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzE4LDgg
QEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAg
ICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251
bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAs
IDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBhZGRp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BDXSwg
dDAKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4LDIyIEBAIF9sbGludF9vcF9pc19zdHJp
bmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUp
CisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9y
YWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgLTggKiBJ
bmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhd
LCB2YWx1ZQorZW5kCisKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVy
dHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlPZmZz
ZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQor
ICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5s
aW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UK
Ky5yZWFkeToKKyAgICBsb2FkcCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRT
dG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2ZUds
b2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4
W1BCLCBQQywgOF0gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArODA1LDcg
QEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAg
bG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwg
dDAKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkgKiA4
W1BCLCBQQywgOF0sIHQwCkBAIC05MzcsNyArOTUyLDcgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoKK21h
Y3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5k
IHdlIGRvIG5vdCBtb2RpZnkgdGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxv
dyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4
LDE4ICs5NjMsMzAgQEAgX2xsaW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwgUEMs
IDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAg
ICBsb2FkcCBbdDAsIHQyXSwgdDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAgIGxv
YWRwIDY0W1BCLCBQQywgOF0sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBkaXNw
YXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAgIHQw
LAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAg
ICAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0
eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIs
IHQxLCA4XQorICAgICAgICAgICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAg
IHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAg
ICAgIGVuZCkKKyAgICAgICAgICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkp
CitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9y
YWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9v
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2NSArMTAwNSw5MyBAQCBfbGxpbnRfb3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0
X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBD
LCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5
SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQotICAgIHdyaXRlQmFycmllcih0MCkK
LSAgICBzdG9yZXAgdDAsIFt0MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0
eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3Bl
cnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA0MFtQQiwgUEMs
IDhdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkK
KyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNo
LCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAg
IGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGlu
ZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFu
c2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5l
OgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRy
YW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMyW1BC
LCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQ
dXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENo
ZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
KQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSkKLSAgICB3cml0ZUJhcnJpZXIodDEpCi0gICAgc3RvcmVwIHQxLCBb
dDNdCi0gICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEKLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAg
ICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKHQxKQorICAgICAgICAgICAgc3RvcmVwIHQxLCBbdDNdCisgICAgICAgICAgICBs
b2FkcCA0OFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5k
CisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQK
KworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorICAg
IGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2Ny
YXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKKy5sb29wOgorICAg
IGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRw
IDgsIHNjcmF0Y2gKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVy
ZV0sIFZhbHVlTnVsbCwgLmxvb3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRp
b25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0Fk
ZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAgICAg
IG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25zdCBw
cm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVn
aXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2Ny
YXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBz
Y3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCi0gICAgICAgICAgICBicGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJl
XSwgVmFsdWVOdWxsLCAuZG9uZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRwIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAg
ICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAg
IGFkZHAgOCwgc2NyYXRjaAotICAgICAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlw
ZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAg
ICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJ
bmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3Ms
IHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEw
Niw4ICsxMTYxLDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdLCB0MwogICAgIHN1YmkgMSwgdDMKICAgICBiaWFlcSB0MywgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0MV0sIC5vcEdldEJ5UG5h
bWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAg
ICBsb2FkcCBbdDAsIHQzLCA4XSwgdDAKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fb2Zmc2V0QmFzZVt0MV0sIHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MywgdDAsIHQwKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgc3RvcmVwIHQwLCBb
Y2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCg3KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBAQCBjb25zdCBMTEludFJldHVyblBDID0g
QXJndW1lbnRDb3VudCArIFRhCiAjIFN0cmluZyBmbGFncy4KIGNvbnN0IEhhc2hGbGFnczhCaXRC
dWZmZXIgPSA2NAogCisjIFByb3BlcnR5IHN0b3JhZ2UgY29uc3RhbnRzCitpZiBKU1ZBTFVFNjQK
KyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA0CitlbHNlCisgICAgY29uc3QgSW5s
aW5lU3RvcmFnZUNhcGFjaXR5ID0gNgorZW5kCisKICMgQWxsb2NhdGlvbiBjb25zdGFudHMKIGlm
IEpTVkFMVUU2NAogICAgIGNvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKQEAg
LTMxMiw4ICszMTksNyBAQCBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5k
CiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIHN0cnVj
dHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09i
amVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0
LCByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX291
dE9mTGluZVN0b3JhZ2VbcmVzdWx0XQogICAgIGVuZAogZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEg
QEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgogICAgIGRpc3BhdGNoKDUpCiAKIAorbWFj
cm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlv
bikKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgcHJvcGVydHkgc3RvcmFn
ZSwgYW5kIHRoYXQgdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNl
ZC4KKyAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFj
cm8gd2l0aE91dE9mTGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVh
dGlvbikKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdF0sIHBy
b3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdlIHJl
Z2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhh
dCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmplY3Qg
cG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3BlcnR5
U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKKwogX2xsaW50X29wX2RlbF9ieV9pZDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5X2lk
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5k
CiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAg
ICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19h
PyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01
NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRz
LnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNt
LnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4
NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1l
ZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1
dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJl
OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZTsKLSAgICAgICAgc2l6ZV90IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBT
dHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpOyB9Ci0gICAgICAgIHNpemVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlv
bk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAg
ICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJpdmF0
ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
biA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAgICAgdmlz
aXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlm
CisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
CisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9y
YWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2Jq
ZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2Ug
R0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUt
cHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKKyAgICAgICAg
dmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3Rv
cmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGlu
ZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOworICAgIH0K
KworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CisjZW5kaWYKK30KKwordm9pZCBKU0ZpbmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1
bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xh
dGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0g
ZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3Qt
PnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgaWYgKHRoaXNPYmplY3Qt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0
b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3Rv
cmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFnZSkg
eworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKICAgICAgICAgLy8gV2UgaGF2ZSB0
aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBv
ZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZv
aWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAs
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6
ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VT
aXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CiAgICAgICAgIHN0b3Jh
Z2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hl
Y2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFn
ZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNPYmpl
Y3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOworICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0b3JhZ2UoKSwgc3RvcmFnZVNpemUpOwor
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogI2Vu
ZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNP
YmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAg
ICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBvYmotPnN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICBp
ZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
ICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAy
LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogCiAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBp
ZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRlICYmICFleGVjLT5nbG9iYWxEYXRhKCku
aXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7CkBAIC0zOTQsNyArNDI0LDcgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1l
cmFibGUoRXhlYwogYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1
cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0
cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlz
IGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHBy
b2JhYmx5CkBAIC01MTYsMjAgKzU0NiwyMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1
bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQor
ICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3Qgb2Zmc2V0Owor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92
ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dFVu
ZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG9mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVk
QXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5
LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEoKICAgICByZXR1
cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpn
cm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNp
emUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZM
aW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXpl
X3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAgLy8g
SXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVyZSgp
LCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9u
LgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVydHlT
dG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBt
X291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5
U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgIGlm
ICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0
ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hv
IGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0g
bmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC50cnlBbGxv
Y2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pICogbmV3U2l6ZSwg
JnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdl
ID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLQotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3UHJvcGVydHlT
dG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ldOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZv
ciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJz
LgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVydHlTdG9yYWdlOwpAQCAtNTk0LDggKzYy
MSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKIHsKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVf
dCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpu
b3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgp
LT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwp
OworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihvYmplY3QtPmdldERpcmVjdE9mZnNldChv
ZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzks
MTggKzc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBY2Nlc3NvciAgICAgPSAxIDw8
IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0ZXIKICAgICB9OwogCi0jaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
NgotI2Vsc2UKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAot
I2VuZGlmCi0KLUNPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSA+PSAwKSwgZmluYWxfc3RvcmFnZV9ub25fbmVnYXRpdmUpOworICAgIGNsYXNzIEpTRmlu
YWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtMTY5LDI2ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NF
UlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlv
biBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGly
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgp
OworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0
LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVl
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsK
KyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwg
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAg
ICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9j
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBz
cGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0
aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0
IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCk7IH0KKyAgICAgICAgQ29u
c3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRo
aXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZVVuc2FmZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbiAtIHByb3Bl
cnR5U3RvcmFnZSgpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0
b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFn
ZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhh
c0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2Fm
ZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAg
ICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5U3Rv
cmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgp
OyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25G
b3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
JmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAg
ICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
b2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdl
VW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0OworICAgICAgICAgICAgdmFsaWRhdGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICAv
LyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1ZhbHVl
IGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0
b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0K
LSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7
IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KKyAgICAgICAgSlNW
YWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVy
biBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQorICAgICAgICB2b2lkIHB1dERp
cmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFs
RGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RP
ZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkt
PnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2
OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAg
IGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9u
c0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVf
dCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0
b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9Ci0gICAg
ICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdldCgpCi0gICAgICAgICAgICAgICAgfHwg
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0
aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgc2V0UHJvcGVydHlTdG9yYWdl
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93T3V0T2ZMaW5lU3RvcmFnZShKU0ds
b2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICB2b2lk
IHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vz
c2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAg
ICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShK
U0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAg
IHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0
b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgICAg
IHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBm
bGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yNjEs
NyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7
CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCk7CiAgICAg
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC0yNzEsNyArMzA0LDcg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB7CiAg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkg
fHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgICAgICAvLyBU
byBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxv
dy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpT
Tm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgdm9pZCBy
ZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAtMzA1LDE5ICszMzgsNiBAQCBDT01QSUxF
X0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3Qo
KTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9w
ZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0
b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgp
IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0KLSAgICAgICAgY29uc3QgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtv
ZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KICAgICAgICAg
dGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2Jh
bERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5
U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9w
ZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBT
dHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIFN0
b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmllciBt
X291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5o
ZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICszNzMsMTQgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBs
aWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgp
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+
c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJU
KGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0zODEsNiArNDAxLDggQEAgQ09N
UElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbmxp
bmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU0Zp
bmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAg
ICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9
PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NF
UlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNh
cGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9y
YWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNT
RVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBAIC00MDAsMTMgKzQyNSwxMyBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0Zp
bmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVT
dG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxp
bmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZXTsKICAgICB9OwogCiBpbmxpbmUgSlNG
aW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkgQEAgaW5saW5lIHNpemVfdCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9i
amVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0
LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVj
dCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3Rv
cmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlT
dG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFTU0VSVChzdG9y
YWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmlu
YWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGlj
X2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBB
U1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVCgh
c3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBA
IGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNP
YmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3Rv
cmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNDZWxsKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRo
aXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
dGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBK
U09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2Jh
bERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNhcGFj
aXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNf
aW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5
OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCk7Ci19Ci0KIGlubGluZSBib29s
IEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25zdAogewogICAgIHJl
dHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGluZm8pOwpAQCAtNjExLDEwICs2MjcsMTAg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+
aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5o
YXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAg
ICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdl
dCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY5Miw4IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVz
OwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1
cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChv
ZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJp
YnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBz
cGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAg
ICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAg
ICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24g
IT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAtNzAwLDEzICs3MTYsMTQgQEAgaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICBpZiAoKG1vZGUgPT0g
UHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdl
KCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
KSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+
c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgUHJvcGVydHlTdG9y
YWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgIGlmIChzdHJ1Y3R1
cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdTdG9y
YWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdl
Q2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBu
ZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogCi0gICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIHZh
bGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxp
ZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBj
YWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC03MTQsMTUgKzcz
MSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1
cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0g
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2Ug
PSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgbmV3U3RvcmFn
ZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotCi0gICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7IAorICAg
ICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxE
YXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisK
KyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShn
bG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZz
ZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcg
cHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVu
dGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hh
YmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0Nl
bGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0
TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAK
LSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
VmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3Jh
Z2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs4MDAsMjIgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2FwYWNpdHkg
PT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgaWYgKG9s
ZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAg
ICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9w
ZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShn
bG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2JhbERhdGEs
IG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHNl
dE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsK
IH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNz
YXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdTdG9yYWdl
ID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFn
ZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0
Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9y
YWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdy
b3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3Ry
dWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxl
T2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdT
dG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1
ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAog
ewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYgKzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5F
IFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAgcmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMg
aXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBhIGxv
YWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoKKy8vIEZvciBpbmxpbmUgb2Zmc2V0czog
YSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0
LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCitp
bmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAg
IHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAt
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSArIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBp
bmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNP
dXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNl
dEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZl
VG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZz
ZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZz
ZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iq
IEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMgPSAwOwogICAg
IGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8t
PnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAgJiYgIW8t
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51bUNh
Y2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAg
ICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6
ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
PigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5h
bWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwotICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKKyAgICBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRh
dGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAg
ICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICAgICAgc3RhdGlj
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwot
ICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVf
dCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAgICAg
ICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsK
LSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgCkBAIC02MywxMSArNTcsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQm
IG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpID49IG1fbnVtQ2FjaGVhYmxl
U2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgb2Zmc2V0
ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBtX29mZnNldEJhc2U7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04OCwxMiArODIsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJv
dGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHBy
b3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5h
bWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkK
ICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkp
KTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVjdC0+c3RydWN0dXJlKCktPmZpcnN0
VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWlu
PiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNhY2hlYWJs
ZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7CisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
OCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAg
IGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RG
Ojpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVj
dHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZp
Y1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBqc0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKICAgICB9
CiAKLSAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBzbG90T2Zmc2V0KQorICAgIGlubGluZSBzaXplX3Qg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eU9mZnNldCYgc2xvdE9mZnNldCkKICAgICB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGJh
c2UuYXNDZWxsKCk7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJz
CiAgICAgcmV0dXJuIGNwdXNUb1VzZTsKIH0KIAotCiBPcHRpb25zOjpFbnRyeSBPcHRpb25zOjpz
X29wdGlvbnNbT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25zXTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFt
ZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6CkBAIC0xMTksMTEgKzExOCwxMSBAQCBjb25zdCBP
cHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpCiB2b2lkIE9wdGlvbnM6OmluaXRpYWxp
emUoKQogewogICAgIC8vIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWly
IGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfKSBcCisjZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8sIGRl
ZmF1bHRWYWx1ZV8pICAgIFwKICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsKICAgICBKU0Nf
T1BUSU9OUyhGT1JfRUFDSF9PUFRJT04pCiAjdW5kZWYgRk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAg
ICAgCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFycyB0byBvdmVycmlkZSBvcHRpb25zIGlm
IGFwcGxpY2FibGUuCiAgICAgLy8gVGhlIGV2biB2YXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRo
ZSBvcHRpb24gcHJlZml4ZWQgd2l0aAogICAgIC8vICJKU0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIg
QEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVy
aXN0aWMobmFtZV8oKSwgIkpTQ18iICNuYW1lXyk7CiAgICAgSlNDX09QVElPTlMoRk9SX0VBQ0hf
T1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgotICAgIAogI2VuZGlmIC8vIFJVTl9USU1F
X0hFVVJJU1RJQ1MKIAorI2lmIDAKKyAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8g
YXV0byBpbmRlbnRhdGlvbgorI2VuZGlmCisgICAgCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdo
ZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAgICBBU1NF
UlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JP
cHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZu
ZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFibGVf
aAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAt
NzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQgdikK
IAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKLSAgICB1
bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAot
ICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93
bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAgICAgICAg
LCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQsOCArMTc1LDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJv
cGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29s
IGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0g
ICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgUHJvcGVydHlP
ZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0IG5leHRPZmZzZXQo
SlNUeXBlIHR5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFibGUsIGVuc3VyaW5n
IHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQuCiAgICAgUGFzc093
blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVu
c2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAgICAgdW5zaWduZWQg
bV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+ID4gbV9kZWxldGVk
T2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4gPiBtX2RlbGV0ZWRP
ZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAx
NjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4ID0gMDsKQEAgLTI2
NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAg
ICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVj
dG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNl
dHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0
cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9m
ZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVu
c2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRz
ID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNl
dHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxE
YXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVk
T2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0
cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zm
c2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7
CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwor
ICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9m
ZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6
On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGluZSBib29sIFByb3Bl
cnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAh
bV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVy
dHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVy
dHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9k
ZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1fZGVs
ZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5yZW1vdmVMYXN0KCk7
CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRk
RGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxl
OjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1f
ZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5k
KG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpuZXh0
T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zmc2V0KCkpCisgICAg
ICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYgKHR5cGUgPT0gRmlu
YWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAorICAgIHJldHVybiBz
aXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBhc3NPd25QdHI8UHJv
cGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAgIEFTU0VSVChuZXdD
YXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBpbmxpbmUgc2l6ZV90
IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IHNpemVv
ZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVsZXRlZE9mZnNldHMp
Ci0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVv
Zih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFj
aXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByb3BlcnR5T2Zm
c2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAiSlNUeXBlLmgiCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNlbHNl
CisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgorCit0eXBlZGVmIGlu
dCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRP
ZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9m
ZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKworLy8g
RGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3
YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KTsKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBl
IHR5cGUpOworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KTsKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNU
eXBlIHR5cGUpOworaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpOworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsK
K2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7Citp
bmxpbmUgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
OworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KTsKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9y
TGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJP
ZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKTsK
K2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSk7CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9w
ZXJ0eU9mZnNldEZvcihKU1R5cGUgdHlwZSk7CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBB
U1NFUlQob2Zmc2V0ID49IGludmFsaWRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBjaGVja09m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIFVOVVNFRF9Q
QVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBBU1NFUlQob2Zmc2V0
ID49IGludmFsaWRPZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNldAor
ICAgICAgICAgICB8fCB0eXBlID09IEZpbmFsT2JqZWN0VHlwZQorICAgICAgICAgICB8fCBpc091
dE9mTGluZU9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAg
QVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRl
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tP
ZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsK
K30KKworaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7
CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQ7Cit9CisKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgPCBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHk7Cit9CisKK2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAg
IHJldHVybiAhaXNJbmxpbmVPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVfdCBvZmZz
ZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRl
T2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOworICAg
IHJldHVybiBvZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQp
OworICAgIEFTU0VSVChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zm
c2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5S
ZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbklubGluZVN0b3JhZ2Uo
b2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7Cit9
CisKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJv
cGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgaWYg
KG9mZnNldCA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQgKyAxOworfQorCitpbmxpbmUgc2l6
ZV90IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNU
eXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAodHlw
ZSA9PSBGaW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyAxOworICAgIHJl
dHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChvZmZzZXQpOworfQorCitp
bmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsK
KyAgICBpZiAodHlwZSAhPSBGaW5hbE9iamVjdFR5cGUgJiYgb2Zmc2V0ID09IGludmFsaWRPZmZz
ZXQpCisgICAgICAgIHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICByZXR1cm4gb2Zm
c2V0ICsgMTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRG
b3IoSlNUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZvcihpbnZh
bGlkT2Zmc2V0LCB0eXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQ
cm9wZXJ0eU9mZnNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBA
QAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgorI2lu
Y2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtODksNyAr
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hl
ZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9CiAg
ICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5
VHlwZSAhPSBVbmNhY2hlYWJsZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQotICAgICAgICBz
aXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUg
dmFsdWUsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90
QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEpTQ19W
QUxVRV9NQVJLRVI7CkBAIC0xNjAsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBtX2RhdGEuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3Qq
IGdldHRlckZ1bmMsIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVH
ZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJGdW5j
KTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwpAQCAt
MjA2LDcgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICAv
LyBDbGVhciBvZmZzZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFByb3Bl
cnR5U2xvdCBoYXMgYmVlbiB1c2VkIGJlZm9yZS4KICAgICAgICAgICAgIC8vIChGb3Igb3RoZXIg
ZGF0YSBtZW1iZXJzLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2UgcmV1
c2Ugd291bGQgbWVhbmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1fb2Zm
c2V0ID0gMDsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAg
ICAgIG1fY2FjaGVkUHJvcGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgIH0KIApAQCAt
MjMyLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7
CiAgICAgICAgIEpTVmFsdWUgbV90aGlzVmFsdWU7CiAKLSAgICAgICAgc2l6ZV90IG1fb2Zmc2V0
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgQ2FjaGVkUHJvcGVy
dHlUeXBlIG1fY2FjaGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE4
MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmpl
Y3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0
eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX3R5cGUgPSBFeGlzdGluZ1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNlID0g
YmFzZTsKICAgICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAg
ICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsKICAg
ICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmlj
dE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSAhPSBVbmNhY2hhYmxlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKICAgICAgICAg
ICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsK
ICAgICAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRl
OgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKLSAgICAg
ICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAg
ICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw4ICsxNTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAg
LCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0
KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5
cGVJbmZvLmlzRmluYWxPYmplY3QoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFj
aXR5IDogMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBh
Y2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFy
eUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUo
ZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0xNzks
OCArMTc5LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAg
ICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNz
SW5mbygmc19pbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXpl
ZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAgICwgbV9v
ZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDApCisgICAgLCBtX29m
ZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFy
eUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9i
YWxEYXRhLCB0aGlzLCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2NsYXNz
SW5mbyhwcmV2aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50
U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KHByZXZpb3VzLT5tX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQobm9P
ZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291dE9mTGluZUNh
cGFjaXR5KQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFy
eUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVy
dHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2aW91
cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQg
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVy
ZS0+bV9wcmV2aW91cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVy
ZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7Cisg
ICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+
Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwg
bV90eXBlSW5mby50eXBlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChK
CiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgIGNyZWF0ZVByb3Bl
cnR5TWFwKG1fb2Zmc2V0ICsgMSk7CisgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKG51bWJlck9m
U2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkpOwogCiAgICAg
Zm9yIChwdHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsK
ICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKQEAgLTI1NiwyMSArMjU2LDIxIEBA
IHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiB9CiAKLWlu
bGluZSBzaXplX3QgbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2Fw
YWNpdHkpCitpbmxpbmUgc2l6ZV90IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90
IGN1cnJlbnRDYXBhY2l0eSkKIHsKICAgICBpZiAoIWN1cnJlbnRDYXBhY2l0eSkKICAgICAgICAg
cmV0dXJuIDQ7CiAgICAgcmV0dXJuIGN1cnJlbnRDYXBhY2l0eSAqIDI7CiB9CiAKLXZvaWQgU3Ry
dWN0dXJlOjpncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKQordm9pZCBTdHJ1Y3R1cmU6Omdy
b3dPdXRPZkxpbmVDYXBhY2l0eSgpCiB7Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSA9
IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KTsK
KyAgICBtX291dE9mTGluZUNhcGFjaXR5ID0gbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSht
X291dE9mTGluZUNhcGFjaXR5KTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3
UHJvcGVydHlTdG9yYWdlU2l6ZSgpCitzaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRP
ZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKQogewotICAgIHJldHVybiBuZXh0UHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgcmV0dXJuIG5leHRPdXRP
ZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAgCiB2b2lkIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lk
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0CiAgICAgZW50cnktPnNwZWNpZmlj
VmFsdWUuY2xlYXIoKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CkBA
IC0yOTYsNyArMjk2LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dAogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJblByZXZpb3VzID0gZXhpc3RpbmdUcmFu
c2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpOwogICAgICAgICBpZiAoc3Bl
Y2lmaWNWYWx1ZUluUHJldmlvdXMgJiYgc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgIT0gc3BlY2lm
aWNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NFUlQoZXhpc3RpbmdU
cmFuc2l0aW9uLT5tX29mZnNldCAhPSBub09mZnNldCk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0
KGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV90eXBlSW5mby50eXBl
KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0OwogICAg
ICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOwogICAgIH0KQEAgLTMwNCw3ICszMDQsNyBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJuIDA7
CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUgYSBz
cGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhlcmUg
aXMKICAgICAvLyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3BlcnR5
IG5hbWUgYW5kIGF0dHJpYnV0ZXMsIGJ1dApAQCAtMzI3LDggKzMyNyw4IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0
aW9uID0gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24pOwogICAgICAgICBv
ZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmICh0cmFuc2l0aW9u
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKQotICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCk7CisgICAgICAgIGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXplKCkgPiB0cmFuc2l0
aW9uLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091
dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KICAg
ICAKQEAgLTM1MywxNSArMzUzLDE1IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXQKICAgICB9CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZpY1Zh
bHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7
Ci0gICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24t
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXpl
KCkgPiB0cmFuc2l0aW9uLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICB0cmFuc2l0aW9u
LT5ncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKIAogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0g
b2Zmc2V0OwogICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKGdsb2JhbERhdGEs
IHRyYW5zaXRpb24pOwogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHNpemVf
dCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFTU0VS
VCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtNTQ4LDE4ICs1
NDgsMTkgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogCiAgICAg
ICAgIHNpemVfdCBwcm9wZXJ0eUNvdW50ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CiAgICAg
ICAgIFZlY3RvcjxKU1ZhbHVlPiB2YWx1ZXMocHJvcGVydHlDb3VudCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdE9mZnNl
dCA9IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IobV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwogICAg
ICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFibGUt
PmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsraSkgewogICAgICAgICAgICAgdmFsdWVz
W2ldID0gb2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoaXRlci0+b2Zmc2V0KTsKICAgICAgICAgICAg
IC8vIFVwZGF0ZSBwcm9wZXJ0eSB0YWJsZSB0byBoYXZlIHRoZSBuZXcgcHJvcGVydHkgb2Zmc2V0
cwotICAgICAgICAgICAgaXRlci0+b2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGl0ZXItPm9mZnNl
dCA9IGkgKyBmaXJzdE9mZnNldDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ29w
eSB0aGUgb3JpZ2luYWwgcHJvcGVydHkgdmFsdWVzIGludG8gdGhlaXIgZmluYWwgbG9jYXRpb25z
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50OyBpKyspCi0g
ICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBpLCB2YWx1ZXNb
aV0pOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgZmly
c3RPZmZzZXQgKyBpLCB2YWx1ZXNbaV0pOwogCiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+Y2xl
YXJEZWxldGVkT2Zmc2V0cygpOwogICAgIH0KQEAgLTU2OCw3ICs1NjksNyBAQCBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01Nzks
MTMgKzU4MCwxMyBAQCBzaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuCiAg
ICAgCiAgICAgcGluKCk7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
IGlmIChwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQot
ICAgICAgICBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgaWYgKG91dE9mTGluZVNpemUoKSA+IG91dE9m
TGluZUNhcGFjaXR5KCkpCisgICAgICAgIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIHJl
dHVybiBvZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBBU1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNT
RVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwpAQCAtNTkzLDggKzU5NCw3IEBAIHNpemVfdCBTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFQKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFw
SWZOZWNlc3NhcnlGb3JQaW5uaW5nKGdsb2JhbERhdGEpOwogCiAgICAgcGluKCk7Ci0gICAgc2l6
ZV90IG9mZnNldCA9IHJlbW92ZShwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBvZmZzZXQ7Cisg
ICAgcmV0dXJuIHJlbW92ZShwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6cGlu
KCkKQEAgLTYzOSwyMCArNjM5LDIwIEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0
dXJlOjpjb3AKIAogUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQcm9w
ZXJ0eVRhYmxlRm9yUGlubmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
b3duZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9w
ZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9w
ZXJ0eVRhYmxlKG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0KSk7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERh
dGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG51bWJlck9m
U2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkpKTsKIH0KIAot
c2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBK
U0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7CiAKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgIFBy
b3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5TmFt
ZS51aWQoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bm90
Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgYXR0cmlidXRlcyA9
IGVudHJ5LT5hdHRyaWJ1dGVzOwogICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNW
YWx1ZS5nZXQoKTsKQEAgLTY4NSw5ICs2ODUsOSBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
QWxsRnVuY3Rpb25zKEpTCiAgICAgICAgIGl0ZXItPnNwZWNpZmljVmFsdWUuY2xlYXIoKTsKIH0K
IAotc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3BlY2lm
aWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKLSAgICBB
U1NFUlQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOworICAgIEFT
U0VSVCghSlNDOjppc1ZhbGlkT2Zmc2V0KGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpKSk7
CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RW51
bSkKQEAgLTY5OCwxMiArNjk4LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1
ZShKU0dsbwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICBjcmVhdGVQcm9wZXJ0
eU1hcCgpOwogCi0gICAgdW5zaWduZWQgbmV3T2Zmc2V0OwotCi0gICAgaWYgKG1fcHJvcGVydHlU
YWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQotICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5
VGFibGUtPmdldERlbGV0ZWRPZmZzZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIG5ld09mZnNldCA9
IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9
IG1fcHJvcGVydHlUYWJsZS0+bmV4dE9mZnNldChtX3R5cGVJbmZvLnR5cGUoKSk7CiAKICAgICBt
X3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGdsb2JhbERhdGEsIHRoaXMsIHJl
cCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSk7CiAKQEAgLTcxMSw3ICs3
MDYsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAgICAgcmV0
dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtNzI0
LDcgKzcxOSw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHIKICAg
ICBpZiAoIXBvc2l0aW9uLmZpcnN0KQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OwogCiAgICAgbV9wcm9wZXJ0eVRhYmxl
LT5yZW1vdmUocG9zaXRpb24pOwogICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkRGVsZXRlZE9mZnNl
dChvZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwot
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBK
U1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVD
aGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0xMDMsMzIgKzEwMywzMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAgYm9vbCBp
c0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50RXh0ZW5zaW9uczsgfQogICAg
ICAgICBib29sIGRpZFRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RpZFRyYW5zaXRpb247
IH0KLSAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpCisgICAgICAgIGJv
b2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gcHJvcGVydHlTdG9yYWdlU2l6ZSgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IG91dE9mTGluZVNp
emUoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKSB7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRTaXplID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNl
dChtX29mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkg
Pj0gY3VycmVudFNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2l6ZSA9PSBv
dXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUt
PnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdl
Q2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CiAg
ICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NF
UlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0
eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX3By
b3BlcnR5VGFibGUtPnNpemUoKSA9PSB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICB9
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdQcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVk
TmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAogCiAgICAgICAgIFN0cnVjdHVyZSogZmxh
dHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNlIHNo
b3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
aXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAg
ICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0
IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3By
b3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5k
ICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTQ5LDE4ICsxNDksMTE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAotICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IEFT
U0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3ByZXZp
b3VzLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNf
aW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKKyAgICAgICAgfQog
ICAgICAgICBib29sIHRyYW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1
Y3R1cmVUb0ZpbmQpOwogCi0gICAgICAgIHZvaWQgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCk7Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgY29uc3QgeyBB
U1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eTsgfQotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8p
OyByZXR1cm4gKG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9y
YWdlU2l6ZSgpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSkpOyB9Ci0gICAg
ICAgIHNpemVfdCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdDsKLSAgICAgICAgYm9vbCBp
c1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9i
YWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEm
LCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBK
U0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgdm9pZCBncm93T3V0T2ZMaW5lQ2FwYWNp
dHkoKTsKKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOworICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CisgICAgICAgIH0K
KyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmlu
YWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5
U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5lU3Rv
cmFnZUNhcGFjaXR5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zm
c2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXpl
Rm9yS25vd25Ob25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX3R5cGVJbmZvLnR5cGUoKSAhPSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAg
aWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZP
dXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAg
IHVuc2lnbmVkIG91dE9mTGluZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAg
aWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6
ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gdGhpcy0+aW5saW5lQ2FwYWNpdHkoKTsKKyAg
ICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBp
bmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1iZXJP
Zk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAg
ICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlu
bGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIGlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2Jq
ZWN0VHlwZSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQ7CisgICAgICAgICAgICBpZiAo
bV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVydHlUYWJs
ZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VD
YXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAg
dW5zaWduZWQgaW5saW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIGlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgICAgIH0KKyAg
ICAgICAgdW5zaWduZWQgdG90YWxTdG9yYWdlU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIG51
bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgdG90YWxTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09
ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lQ2FwYWNpdHkgKyBpbmxp
bmVDYXBhY2l0eSgpOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmlyc3RW
YWxpZE9mZnNldCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNJbmxpbmVT
dG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
aW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IGxhc3RWYWxpZE9mZnNldCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3By
b3BlcnR5VGFibGUpIHsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBzaXplID0gbV9w
cm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gaW5saW5l
U3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgICAgIHJldHVybiBzaXplIC0gMTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICAgICAgfQorICAgICAg
ICBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ID49IGZpcnN0VmFsaWRPZmZzZXQoKQorICAg
ICAgICAgICAgICAgICYmIG9mZnNldCA8PSBsYXN0VmFsaWRPZmZzZXQoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUp
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmlu
ZyYgbmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KICAgICAg
ICAgYm9vbCBoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3Rv
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4
Y2x1ZGluZ1Byb3RvOyB9CkBAIC0xNzcsNyArMjczLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIGJvb2wgaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBt
X2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzOyB9CiAgICAgICAgIAotICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUt
PmlzRW1wdHkoKSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CisgICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpOworICAgICAg
ICAgICAgcmV0dXJuICFKU0M6OmlzVmFsaWRPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CiAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rp
b24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3Bl
Y2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9
IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQpAQCAtMjczLDggKzM3NCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIERpY3Rpb25hcnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1ZShK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoUHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIHZv
aWQgY3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAgICAgdm9p
ZCBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0zMDEsNyArNDAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGludCB0cmFuc2l0aW9uQ291bnQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGUgbnVtYmVyIG9mIHRyYW5zaXRpb25zIGlzIGFsd2F5cyB0aGUgc2Ft
ZSBhcyBtX29mZnNldCwgd2Uga2VlcCB0aGUgc2l6ZSBvZiBTdHJ1Y3R1cmUgZG93biBieSBub3Qg
c3RvcmluZyBib3RoLgotICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8g
MCA6IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFz
dE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgYm9vbCBpc1ZhbGlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5
cGVDaGFpbikgY29uc3Q7CkBAIC0zMTAsOCArNDExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFRyYW5zaXRpb25MZW5ndGggPSA2NDsKIAotICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IG5vT2Zmc2V0ID0gLTE7Ci0KICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7CiAKICAgICAg
ICAgVHlwZUluZm8gbV90eXBlSW5mbzsKQEAgLTMzNiwxMCArNDM1LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgbXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0IG1fdHJh
bnNpdGlvbldhdGNocG9pbnRTZXQ7CiAKLSAgICAgICAgdWludDMyX3QgbV9wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eTsKKyAgICAgICAgdWludDMyX3QgbV9vdXRPZkxpbmVDYXBhY2l0eTsKIAogICAg
ICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBhY2NvdW50IGZvciBhbm9ueW1vdXMgc2xvdHMKLSAg
ICAgICAgaW50IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIAog
ICAgICAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKICAgICAgICAgYm9vbCBtX2lz
UGlubmVkUHJvcGVydHlUYWJsZSA6IDE7CkBAIC0zNTMsMjYgKzQ1MiwyNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAgICAgfTsK
IAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAK
ICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQo
cHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnkt
Pm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0
IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBp
bmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJs
ZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBpbnZh
bGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0
eVRhYmxlLT5maW5kV2l0aFN0cmluZyhuYW1lLmltcGwoKSkuZmlyc3Q7Ci0gICAgICAgIHJldHVy
biBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVudHJ5
ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogICAgIAogICAgIGlubGlu
ZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QK
</data>
<flag name="commit-queue"
          id="158992"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150729</attachid>
            <date>2012-07-04 00:47:29 -0700</date>
            <delta_ts>2012-07-04 01:02:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_14.diff</filename>
            <type>text/plain</type>
            <size>260085</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MCBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEFSTXY3
QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxkcldpZGU4Qml0SW1t
ZWRpYXRlKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6
CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgorICAgICAgICAoQ29udmVydGlibGVMb2Fk
TGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJs
ZUxvYWRMYWJlbDo6Q29udmVydGlibGVMb2FkTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbDo6aXNTZXQpOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3ND
b21wdXRhdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNvbW1vbik6CisgICAgICAgIChDb2RlTG9j
YXRpb25Db252ZXJ0aWJsZUxvYWQpOgorICAgICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db252ZXJ0
aWJsZUxvYWQ6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNv
ZGVMb2NhdGlvbkNvbW1vbjo6Y29udmVydGlibGVMb2FkQXRPZmZzZXQpOgorICAgICAgICAqIGFz
c2VtYmxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxp
emVDb2RlV2l0aERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5o
OgorICAgICAgICAoTGlua0J1ZmZlcik6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0
aW9uT2YpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAg
ICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6Y29udmVydGlibGVMb2FkUHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODYuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmNvbnZlcnRpYmxl
TG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0Ojpjb252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZf
NjQpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgIChSZXBh
dGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdpdGhMb2Fk
KToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0
YXRpb24pOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzZXRMb2FkSW5zdHJ1Y3Rpb25J
c0FjdGl2ZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChYODZBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1
dGF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpk
dW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Okdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yQ2hhaW4pOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChK
U0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVO
YW1lKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6UHV0QnlJZFN0YXR1cyk6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6Om9mZnNldCk6CisgICAgICAgIChQdXRCeUlkU3RhdHVzKToK
KyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OmNvbXB1dGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0
YXR1czo6UmVzb2x2ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxT
dGF0dXM6Om9mZnNldCk6CisgICAgICAgIChSZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKFN0cnVjdHVyZVNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoQnl0ZUNvZGVQYXJzZXIpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0
aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6UHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAg
KFByb3BlcnR5QWNjZXNzUmVjb3JkKToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6REZH
Ojp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUJ1aWxkR2V0QnlJRExp
c3QpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNhY2hlUHV0QnlJ
RCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRQdXRCeUlkTGlzdCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlTdHViQ29tcGlsYXRpb25JbmZvOjpjb3B5VG9TdHViSW5mbyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm86OlByb3Bl
cnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5
SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlUHV0QnlJZFRyYW5z
aXRpb24pOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5o
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29s
dmVfZ2xvYmFsKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlUHV0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjpwYXRjaEdldEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6
SklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5M
aXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0
QnlJZEhvdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwYXRjaEdldEJ5
SWRTZWxmKToKKyAgICAgICAgKEpTQzo6SklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
cG5hbWUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRo
dW5rczo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAg
ICogb2ZmbGluZWFzbS94ODYucmI6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6ZnVuY3Rpb25OYW1lT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpoYXNJbmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlubGluZVN0b3JhZ2VVbnNhZmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lU3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvdXRPZkxpbmVTdG9yYWdlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmxvY2F0aW9uRm9yT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Om9mZnNldEZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERp
cmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTm9uRmlu
YWxPYmplY3Q6OkpTTm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRPdXRPZkxp
bmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpp
bmRleFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb0Jhc2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1
dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXpl
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChQ
cm9wZXJ0eU1hcEVudHJ5KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVy
dHlNYXBFbnRyeSk6CisgICAgICAgIChQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6
OmdldERlbGV0ZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGREZWxl
dGVkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldCk6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpzaXplSW5NZW1vcnkp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlPZmZzZXQuaDogQWRkZWQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpjaGVja09mZnNldCk6CisgICAgICAgIChKU0M6OnZhbGlkYXRl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6Omlz
SW5saW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNPdXRPZkxpbmVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpvZmZzZXRJbklubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRJblJlc3BlY3RpdmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAgIChKU0M6
Om5leHRQcm9wZXJ0eU9mZnNldEZvcik6CisgICAgICAgIChKU0M6OmZpcnN0UHJvcGVydHlPZmZz
ZXRGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90
OjpzZXRWYWx1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0Q2FjaGVhYmxlR2V0
dGVyU2xvdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y2xlYXJPZmZzZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3Bl
cnR5U2xvdDo6c2V0RXhpc3RpbmdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5
U2xvdDo6c2V0TmV3UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmNh
Y2hlZE9mZnNldCk6CisgICAgICAgIChQdXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXApOgorICAgICAg
ICAoSlNDOjpuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpwdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnByZXZpb3VzSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZUNhcGFj
aXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZUZvcktub3du
Tm9uRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6aW5saW5lU2l6ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG90YWxTdG9yYWdlU2l6
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG90YWxTdG9yYWdlQ2FwYWNpdHkpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZpcnN0VmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6Omxhc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNW
YWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNFbXB0eSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6dHJhbnNpdGlvbkNvdW50KToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpnZXQpOgorCiAyMDEyLTA3LTAzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgogCiAgICAgICAgIEVuaDogSGFzaCBDb25zdCBKU1N0cmluZyBpbiBCYWNraW5nIFN0b3Jl
cyB0byBTYXZlIE1lbW9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw4IEBAIGFsbCA6IFwK
ICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJs
ZSAlLmNwcAorCXdoaWNoIHBlcmwKKwlwd2QKIAkkXiAtaSA+ICRACiBMZXhlci5sdXQuaDogY3Jl
YXRlX2hhc2hfdGFibGUgS2V5d29yZHMudGFibGUKIAkkXiA+ICRACkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTU4Miw2ICs1ODIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdGVjdC5oIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBACiAJCTBGRjQyNzY1MTU5MUEx
Q0UwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNh
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkY0Mjc3MTE1OTI3NUQ1MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RTE1
OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgKi87IH07CiAJCTBGRjQy
NzcyMTU5Mjc1RDgwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5
RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0
eU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGOTIyRDQxNEY0NkI0MTAw
NDFBMjRFIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMy
IC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi87
IH07CiAJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTk1Nyw2ICs5NTgsNyBAQAogCQkwRkY0Mjc2MjE1OTFBMUM5MDA0
Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0Rpc2Fzc2VtYmxlci5oOyBwYXRoID0gZGZnL0RGR0Rpc2Fzc2VtYmxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RTE1OTI3NUQyMDA0Q0I5RkYgLyogUmVz
b2x2ZUdsb2JhbFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGNDI3NkYxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb2x2ZUdsb2JhbFN0YXR1cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVy
dHlPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlPZmZz
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFB
MjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDcs
NiArMjEwOSw3IEBACiAJCQkJODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFt
ZS5oICovLAogCQkJCTY1NDAwQzBGMEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJh
eS5jcHAgKi8sCiAJCQkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFy
cmF5LmggKi8sCisJCQkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0
LmggKi8sCiAJCQkJNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAg
Ki8sCiAJCQkJNjU2MjFFNkMwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5oICovLAog
CQkJCTY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8sCkBAIC0yODExLDYg
KzI4MTQsNyBAQAogCQkJCTBGRjQyNzRCMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzcyMTU5Mjc1RDgwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MTY4QzE1QTNCMjM1MDA4
RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE4LDYgKzEwMTgsMTIgQEAgcHVibGljOgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIo
T1BfTERSX2ltbV9UMywgcm4sIHJ0LCBpbW0uZ2V0VUludDEyKCkpOwogICAgIH0KKyAgICAKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyV2lkZThCaXRJbW1lZGlhdGUoUmVnaXN0ZXJJRCBydCwg
UmVnaXN0ZXJJRCBybiwgdWludDhfdCBpbW1lZGlhdGUpCisgICAgeworICAgICAgICBBU1NFUlQo
cm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEy
UmVnNFJlZzRJbW0xMihPUF9MRFJfaW1tX1QzLCBybiwgcnQsIGltbWVkaWF0ZSk7CisgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkckNvbXBhY3QoUmVnaXN0ZXJJRCBydCwgUmVnaXN0
ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKQEAgLTIxMTcsNiArMjEyMyw0
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gNjsKICAgICB9CisgICAgCisgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAg
eworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0
YXJ0KSAmIDEpKTsKKyAgICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgc3dpdGNoIChwdHJbMF0gJiAweEZG
RjApIHsKKyAgICAgICAgY2FzZSBPUF9MRFJfaW1tX1QzOgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgT1BfQUREX2ltbV9UMzoKKyAgICAgICAgICAgIEFTU0VSVCghKHB0clsxXSAm
IDB4RjAwMCkpOworICAgICAgICAgICAgcHRyWzBdICY9IDB4MDAwRjsKKyAgICAgICAgICAgIHB0
clswXSB8PSBPUF9MRFJfaW1tX1QzOworICAgICAgICAgICAgcHRyWzFdIHw9IChwdHJbMV0gJiAw
eDBGMDApIDw8IDQ7CisgICAgICAgICAgICBwdHJbMV0gJj0gMHhGMEZGOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgICAgICBjYWNoZUZsdXNoKHB0ciwgc2l6ZW9mKHVpbnQxNl90KSAq
IDIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICBBU1NFUlQoIShiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDEpKTsKKyAgICAgICAgdWlu
dDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0
KTsKKyAgICAgICAgc3dpdGNoIChwdHJbMF0gJiAweEZGRjApIHsKKyAgICAgICAgY2FzZSBPUF9M
RFJfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFdICYgMHgwRjAwKSk7CisgICAg
ICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAgcHRyWzBdIHw9IE9QX0FERF9p
bW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4RjAwMCkgPj4gNDsKKyAg
ICAgICAgICAgIHB0clsxXSAmPSAweDBGRkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBj
YWNoZUZsdXNoKHB0ciwgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOworICAgIH0KIAogICAgIHVuc2ln
bmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9mb3JtYXR0ZXIuZGVidWdPZmZzZXQoKTsgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NSw2ICsyOTUsMzYgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIEFz
c2VtYmxlckxhYmVsIG1fbGFiZWw7CiAgICAgfTsKKyAgICAKKyAgICAvLyBDb252ZXJ0aWJsZUxv
YWRMYWJlbDoKKyAgICAvLworICAgIC8vIEEgQ29udmVydGlibGVMb2FkTGFiZWwgcmVjb3JkcyBh
IGxvYWRQdHIgaW5zdHJ1Y3Rpb24gdGhhdCBjYW4gYmUgcGF0Y2hlZCB0byBhbiBhZGRQdHIKKyAg
ICAvLyBzbyB0aGF0OgorICAgIC8vCisgICAgLy8gbG9hZFB0cihBZGRyZXNzKGEsIGkpLCBiKQor
ICAgIC8vCisgICAgLy8gYmVjb21lczoKKyAgICAvLworICAgIC8vIGFkZFB0cihUcnVzdGVkSW1t
UHRyKGkpLCBhLCBiKQorICAgIGNsYXNzIENvbnZlcnRpYmxlTG9hZExhYmVsIHsKKyAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgorICAgICAgICBmcmllbmQgY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZm
ZXI7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwo
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENvbnZlcnRpYmxlTG9h
ZExhYmVsKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT4qIG1hc20pCisgICAg
ICAgICAgICA6IG1fbGFiZWwobWFzbS0+bV9hc3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9p
bnRzKCkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWwuaXNTZXQoKTsgfQorICAgIHByaXZhdGU6CisgICAg
ICAgIEFzc2VtYmxlckxhYmVsIG1fbGFiZWw7CisgICAgfTsKIAogICAgIC8vIERhdGFMYWJlbFB0
cjoKICAgICAvLwpAQCAtNTYyLDYgKzU5MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5t
X2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQorI2Vsc2UKKyAgICBMYWJlbCBsYWJlbElnbm9yaW5nV2F0
Y2hwb2ludHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxhYmVsKCk7CisgICAgfQogI2VuZGlm
CiAgICAgCiAgICAgTGFiZWwgbGFiZWwoKQpAQCAtNjcyLDYgKzcwNywxNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgewogICAgICAgICByZXR1cm4gQXNzZW1ibGVyVHlwZTo6cmVhZFBvaW50ZXIoZGF0YUxh
YmVsUHRyLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7Cisg
ICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9jYXRpb24o
KSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1
dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAg
IEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsLmRhdGFM
b2NhdGlvbigpKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBDb2RlTG9jYXRpb25OZWFy
Q2FsbDsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q7CiBjbGFzcyBDb2RlTG9j
YXRpb25EYXRhTGFiZWwzMjsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjsKK2NsYXNz
IENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZDsKIAogLy8gVGhlIENvZGVMb2NhdGlvbiogdHlw
ZXMgYXJlIGFsbCBwcmV0dHkgbXVjaCBkby1ub3RoaW5nIHdyYXBwZXJzIGFyb3VuZAogLy8gQ29k
ZVB0ciAob3IgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCB0byBnaXZlIGl0IGl0cyBmdWxsIG5hbWUp
LiAgVGhlc2UKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIENvZGVMb2NhdGlvbkRhdGFM
YWJlbFB0ciBkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgICBDb2RlTG9jYXRp
b25EYXRhTGFiZWwzMiBkYXRhTGFiZWwzMkF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbENvbXBhY3QgZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KGludCBvZmZz
ZXQpOworICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBjb252ZXJ0aWJsZUxvYWRBdE9m
ZnNldChpbnQgb2Zmc2V0KTsKIAogcHJvdGVjdGVkOgogICAgIENvZGVMb2NhdGlvbkNvbW1vbigp
CkBAIC0xNDYsNiArMTQ4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgOiBDb2RlTG9jYXRpb25Db21t
b24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkge30KIH07CiAKK2NsYXNzIENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb24geworcHVi
bGljOgorICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCgpIHsgfQorICAgIGV4cGxpY2l0
IENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbG9jYXRp
b24pCisgICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKGxvY2F0aW9uKSB7IH0KKyAgICBleHBs
aWNpdCBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQodm9pZCogbG9jYXRpb24pCisgICAgICAg
IDogQ29kZUxvY2F0aW9uQ29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpIHsg
fQorfTsKKwogaW5saW5lIENvZGVMb2NhdGlvbkluc3RydWN0aW9uIENvZGVMb2NhdGlvbkNvbW1v
bjo6aW5zdHJ1Y3Rpb25BdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9D
T0RFX09GRlNFVChvZmZzZXQpOwpAQCAtMTk0LDYgKzIwNSwxMiBAQCBpbmxpbmUgQ29kZUxvY2F0
aW9uRGF0YUxhYmVsQ29tcGFjdCBDb2RlCiAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJl
bENvbXBhY3QocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0
KTsKIH0KIAoraW5saW5lIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBDb2RlTG9jYXRpb25D
b21tb246OmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KGludCBvZmZzZXQpCit7CisgICAgQVNTRVJU
X1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZz
ZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJM
RVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgTGlua0J1
ZmZlcjo6Q29kZVJlZiBMaW5rQnVmZmVyOjpmaW5hbGl6ZQogICAgIAogICAgIGRhdGFMb2coIiAg
ICBDb2RlIGF0IFslcCwgJXApOlxuIiwgcmVzdWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LCBzdGF0aWNfY2FzdDxjaGFyKj4ocmVzdWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSAr
IHJlc3VsdC5zaXplKCkpOwogICAgIGlmICghdHJ5VG9EaXNhc3NlbWJsZShyZXN1bHQuY29kZSgp
LCBtX3NpemUsICIgICAgIiwgV1RGOjpkYXRhRmlsZSgpKSkKLSAgICAgICAgZGF0YUxvZygiICAg
ICAgICA8bm8gZGlzYXNzZW1ibHkgYXZhaWxhYmxlPiIpOworICAgICAgICBkYXRhTG9nKCIgICAg
ICAgIDxubyBkaXNhc3NlbWJseSBhdmFpbGFibGU+XG4iKTsKICAgICAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIExp
bmtCdWZmZXIgewogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
RGF0YUxhYmVsQ29tcGFjdDsKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwz
MiBEYXRhTGFiZWwzMjsKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIg
RGF0YUxhYmVsUHRyOworICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9h
ZExhYmVsIENvbnZlcnRpYmxlTG9hZExhYmVsOwogI2lmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElP
TikKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpMaW5rUmVjb3JkIExpbmtSZWNvcmQ7CiAg
ICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpbmtUeXBlIEp1bXBMaW5rVHlwZTsKQEAg
LTE4MCw2ICsxODEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0
YUxhYmVsQ29tcGFjdChNYWNyb0Fzc2VtYmxlcjo6Z2V0TGlua2VyQWRkcmVzcyhjb2RlKCksIGFw
cGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7CiAgICAgfQogCisgICAgQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkIGxvY2F0aW9uT2YoQ29udmVydGlibGVMb2FkTGFiZWwgbGFiZWwpCisgICAg
eworICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1i
bGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkp
KTsKKyAgICB9CisKICAgICAvLyBUaGlzIG1ldGhvZCBvYnRhaW5zIHRoZSByZXR1cm4gYWRkcmVz
cyBvZiB0aGUgY2FsbCwgZ2l2ZW4gYXMgYW4gb2Zmc2V0IGZyb20KICAgICAvLyB0aGUgc3RhcnQg
b2YgdGhlIGNvZGUuCiAgICAgdW5zaWduZWQgcmV0dXJuQWRkcmVzc09mZnNldChDYWxsIGNhbGwp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
MCw2ICs2MDAsMTQgQEAgcHVibGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHIoZGVzdCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwog
ICAgIH0KKyAgICAKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIo
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBDb252ZXJ0
aWJsZUxvYWRMYWJlbCByZXN1bHQodGhpcyk7CisgICAgICAgIEFTU0VSVChhZGRyZXNzLm9mZnNl
dCA+PTAgJiYgYWRkcmVzcy5vZmZzZXQgPD0gMjU1KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRy
V2lkZThCaXRJbW1lZGlhdGUoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdm9pZCBsb2FkOChJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlz
aW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yKGFkZHJlc3MsIGRlc3QpOwogICAgIH0KIAorICAgIENv
bnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3Vs
dCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zs
X21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNk
X21yKGFkZHJlc3MubV9wdHIsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0
KTsKICAgICB9CiAKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIo
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBDb252ZXJ0
aWJsZUxvYWRMYWJlbCByZXN1bHQgPSBDb252ZXJ0aWJsZUxvYWRMYWJlbCh0aGlzKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICB2b2lkIGxvYWRQdHIoQmFz
ZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMiw2ICsxMjIsMjQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVsaW5rTmVhckNhbGxl
clRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChuZXdDYWxsZWVG
dW5jdGlvbikpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoTG9hZChDb2RlTG9j
YXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgdm9pZCByZXBsYWNl
V2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwp
CisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0
YXRpb24obGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldExvYWRJbnN0cnVjdGlvbklz
QWN0aXZlKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCwgYm9vbCBpc0FjdGl2ZSkK
KyAgICB7CisgICAgICAgIGlmIChpc0FjdGl2ZSkKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoTG9h
ZChsYWJlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoQWRkcmVzc0Nv
bXB1dGF0aW9uKGxhYmVsKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCogbV9zdGFydDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgzOSw2ICsxODM5LDQyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIDU7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhf
dCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Cisj
aWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAg
ICAgICAgICAgcHRyKys7CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAg
IGNhc2UgT1BfTU9WX0d2RXY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPUF9M
RUE6CisgICAgICAgICAgICAqcHRyID0gT1BfTU9WX0d2RXY7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0Nv
bXB1dGF0aW9uKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90
KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNp
ZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAg
ICAgICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAg
Y2FzZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAgICpwdHIgPSBPUF9MRUE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBPUF9MRUE6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisgICAgfQorICAgIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFz
c2VtYmxlckxhYmVsIGNhbGwpCiAgICAgewogICAgICAgICBBU1NFUlQoY2FsbC5pc1NldCgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw5IEBAIHZvaWQgQ29kZUJsb2Nr
OjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAg
ICAgb3AgPSAiZ2V0X2J5X2lkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmU6CisgICAgICAgIG9wID0gImdldF9ieV9pZF9vdXRfb2ZfbGluZSI7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3NlbGY6CiAgICAgICAgIG9wID0g
ImdldF9ieV9pZF9zZWxmIjsKICAgICAgICAgYnJlYWs7CkBAIC0xMDMzLDYgKzEwMzYsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3NlbGY6
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvOgogICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZF9jaGFpbjoKQEAgLTEwNTksNiArMTA2MywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmlu
dFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfb3V0X29mX2xpbmUiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3JlcGxhY2U6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF9yZXBsYWNlIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsMTAg
KzEwNzksMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZTogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDI5LDcgKzIwNDUsOSBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV07CiAgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0
cnVjdGlvblswXS51Lm9wY29kZSkpIHsKICAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgor
ICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9s
aW5lOgogICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUg
fHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVu
bGlua2luZykKQEAgLTIwMzksNiArMjA1Nyw4IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICAgICAgICAgIGlmIChI
ZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKICAgICAg
ICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1
Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1cklu
c3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb20KICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsK
ICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KAorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9y
ZWQsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYg
KCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIGZhbHNlKTsKICAgICAKICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1w
bGUsIGZhbHNlLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVl
KTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yQ2hhaW4o
R2V0QgogICAgICAgICAKICAgICByZXN1bHQubV9vZmZzZXQgPSBjdXJyZW50U3RydWN0dXJlLT5n
ZXQoCiAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1
dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHJlc3VsdC5tX29mZnNldCA9PSBu
b3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVj
dHVyZSk7CkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAog
ICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0
ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQu
bV9vZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0
Lm1fb2Zmc2V0KSkgewogICAgICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgcmVzdWx0Lm1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoc3Bl
Y2lmaWNWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9v
ZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29m
ZnNldCkpCiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3NiwxMCArMTc2LDEwIEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIAogICAgICAgICAgICAg
dW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmlj
VmFsdWU7Ci0gICAgICAgICAgICBzaXplX3QgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAg
ICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAg
ICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0
ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQo
bXlPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90Rm91bmQ7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xOTYsNyArMTk2LDcg
QEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAg
cmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQor
ICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQo
cmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKCFpc1ZhbGlkT2Zm
c2V0KHJlc3VsdC5tX29mZnNldCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAg
aWYgKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCkgeworICAgIGlmICghaXNWYWxpZE9mZnNl
dChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gVGFrZXNTbG93
UGF0aDsKICAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7CiAgICAgICAgIHJl
c3VsdC5tX2NoYWluLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgR2V0QnlJZFN0YXR1c19oCiAjZGVmaW5lIEdldEJ5SWRTdGF0
dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVT
ZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIApAQCAtNDYsMTMgKzQ3LDEzIEBAIHB1
YmxpYzoKIAogICAgIEdldEJ5SWRTdGF0dXMoKQogICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1h
dGlvbikKLSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChp
bnZhbGlkT2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgR2V0QnlJZFN0YXR1cygKICAg
ICAgICAgU3RhdGUgc3RhdGUsIGJvb2wgd2FzU2VlbkluSklULCBjb25zdCBTdHJ1Y3R1cmVTZXQm
IHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNldCgpLAotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
bm90Rm91bmQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVj
dHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCisgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZl
Y3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQogICAgICAgICA6
IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQog
ICAgICAgICAsIG1fY2hhaW4oY2hhaW4pCkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0
dXJlU2V0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYgdGhpcyBpcyBhIGRp
cmVjdCBhY2Nlc3MuCiAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNWYWx1ZSgpIGlmIHRoZXJlIGlzIG5vIHNw
ZWNpZmljIHZhbHVlLgotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNl
dDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0
OyB9CiAgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1Nl
ZW5JbkpJVDsgfQogICAgIApAQCAtODgsNyArODksNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVy
ZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBWZWN0b3I8U3RydWN0dXJlKj4gbV9jaGFpbjsKICAg
ICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJv
cGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhv
cF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAg
ICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF90aGlzLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmls
aW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX291dF9vZl9saW5lLCA5KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYs
IDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlf
aWRfcHJvdG8sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhv
cF9nZXRfYnlfaWRfY2hhaW4sIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApAQCAtMTIy
LDkgKzEyMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3N0cmlu
Z19sZW5ndGgsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhv
cF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQs
IDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX291dF9vZl9saW5lLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCiAgICAgICAgIG1hY3JvKG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNy
byhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
Z2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBAIFB1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQp
OwogICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWQpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxl
ZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBub3RG
b3VuZCkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIG5vdEZvdW5kKTsKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxp
bnRfb3BfcHV0X2J5X2lkCisgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBz
dHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3LDE4IEBAIFB1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NFUlQoc3RydWN0dXJl
LT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAg
ICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Ci0gICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09
IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgIHx8IGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUKKyAgICAgICAgICAgfHwgaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGlu
c3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFp
biA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAgICAgQVNTRVJUKG5l
d1N0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNoYWluKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0
ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQp
OwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwog
ICAgIAogICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVy
ZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKICNlbHNlCkBAIC05NCwyNCArOTcsMjQg
QEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1
Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5w
dXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0g
bm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlUmVwbGFj
ZSwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAgICAgICBv
ZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
VGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBh
Y2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CiAgICAgICAgIEFTU0VSVChzdHVi
SW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9
IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0
dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAg
ICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICBzdHViSW5m
by51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLmdldCgpLApAQCAtMTE5LDE0
ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCksCiAg
ICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwog
ICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9
CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5lIFB1dEJ5SWRTdGF0dXNfaAogCisjaW5jbHVk
ZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX29sZFN0cnVj
dHVyZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKDApCiAgICAgICAgICwgbV9zdHJ1Y3R1
cmVDaGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zm
c2V0KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTY0LDcgKzY1LDcgQEAg
cHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFp
biwKLSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUob2xk
U3RydWN0dXJlKQogICAgICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTc0
LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1h
dGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09ICFtX29sZFN0cnVjdHVyZSk7CiAg
ICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9uZXdTdHJ1
Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0g
IW1fc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1h
dGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBub3RGb3Vu
ZCkpOworICAgICAgICBBU1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRl
ID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOwpAQCAtOTAsNyArOTEsNyBAQCBw
dWJsaWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29s
ZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4o
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNoYWluOyB9Ci0gICAgc2l6ZV90IG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIFB1
dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0
cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsK
ICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1cmVDaGFpbjsKLSAgICBzaXplX3QgbV9vZmZz
ZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3Rh
dHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTcgKzMyLDE5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgRU5BQkxFKExMSU5U
KSB8fCBFTkFCTEUoSklUKQogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0
cnVjdHVyZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAg
ICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAg
ICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGVzSWdub3Jl
ZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAo
IWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0
dXMoKTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhSZXNvbHZlR2xvYmFs
U3RhdHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsKIH0KKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpIHx8IEVOQUJMRShKSVQpCiAKIHN0YXRpYyBSZXNvbHZlR2xv
YmFsU3RhdHVzIGNvbXB1dGVGb3JMTEludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29s
dmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBSZXNv
bHZlR2xvYmFsU3RhdHVzKAotICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAgIFN0YXRlIHN0YXRlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRP
ZmZzZXQsCiAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSkKICAgICAg
ICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKQEAg
LTcwLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9CiAgICAgCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQotICAgIHNpemVfdCBv
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgSlNWYWx1ZSBzcGVjaWZpY1Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAg
U3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwotICAgIHNpemVfdCBt
X29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBKU1ZhbHVlIG1fc3Bl
Y2lmaWNWYWx1ZTsKIH07IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIHB1YmxpYzoKICAgICAKICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlcy5zaXplKCk7IH0KICAgICAK
LSAgICBib29sIGFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJlc1tpXS0+aXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIC8vIENhbGwgdGhpcyBpZiB5b3Uga25vdyB0
aGF0IHRoZSBzdHJ1Y3R1cmUgc2V0IG11c3QgY29uc2lzdCBvZiBleGFjdGx5CiAgICAgLy8gb25l
IHN0cnVjdHVyZS4KICAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvblN0cnVjdHVyZSgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7CiAgICAg
ICAgICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFI7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBk
ZWx0YUNhbGxUb0RvbmU7CisgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3Jh
Z2VMb2FkOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsK
ICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU2xvd0Nhc2U7CiAgICAgICAgICAg
ICAgICAgaW50MzJfdCBkZWx0YUNoZWNrSW1tVG9DYWxsOwpAQCAtMjE5LDYgKzIyMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQxNl90IHN0cnVjdHVyZUNoZWNrOworICAgICAgICAgICAgICAgICAgICAgICAg
aW50MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTIz
MCw2ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgfSBnZXQ7
CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2
X3QgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNp
b24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihib29sIHVzZXNSZXN1bHQsIGludCByZXN1
bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVT
cGVjaWFsaXphdGlvbktpbmQpOwogICAgIHZvaWQgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKLSAgICAgICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdl
LCBzaXplX3Qgb2Zmc2V0KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KTsKICAgICB2
b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1
bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAg
ICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsK
LSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9
IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBw
cm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0g
ICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJh
bmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZv
KG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiks
CiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0
ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9
IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVu
dGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAg
CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0
dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAg
Ym9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlz
RW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlk
U3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09i
amVjdCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9
IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1
cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNp
bmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2Ug
PSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlT
dG9yYWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8K
ICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlz
IGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5k
bGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBi
YXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlk
U3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9u
LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIx
NjMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0
aW9uKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAg
ICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+
dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNl
ID0gZ2V0KGdldEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAgLTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
U2NvcGVkVmFyLCBPcEluZm8oc2xvdCksIGdldFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIG9wX2dldF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Z2V0X2J5X2lkKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9s
aW5lOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKQEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkp
IHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9n
cmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNl
KTsKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAg
IE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRT
dGF0dXMub2xkU3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRU
b0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9m
ZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6
ZSgpKSwgcHJvcGVydHlTdG9yYWdlLCBiYXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAg
ICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZz
ZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5v
ZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAg
ICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlm
aWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5h
cHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhp
dFNpdGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRy
YW5zaXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0
cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3
U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAg
ICAgICAgICAgICAgICBiYXNlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0
b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihK
U09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAg
IG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3Rv
cmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAg
ICAgICAgIFB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5t
X3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksCkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0
YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5v
ZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAg
ICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0
QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEu
aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewpAQCAtMjczOCw4ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAg
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVj
dHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1i
ZXIsIHN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIg
dGhlIHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBpbmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksOSArMTE5LDEzIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgK
ICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6
CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xp
bmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoK
ICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9n
bG9iYWxfdmFyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9p
ZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGlu
Zm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQ
dHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFj
Y2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxS
ZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9h
ZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2Fk
KSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNb
aV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZn
LnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewog
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRp
YmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRv
ciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25l
LApAQCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAg
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVM
b2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5l
cmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApAQCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAg
ICAgICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3RydWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0
dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2Fk
KHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xv
YWRPclN0b3JlKGxvYWRPclN0b3JlKQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2
ICsxODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4g
bV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1
cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVj
azsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0
b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbENvbXBhY3QgbV9sb2FkT3JTdG9yZTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJs
b2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9u
KTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwg
Ym9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93
UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNo
QnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUyLDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdS
ZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNo
ZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRy
X3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOwor
ICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoY29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVk
U3RvcmFnZShvZmZzZXQpKTsKICAgICBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9m
ZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxD
b21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3Rv
cmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2Yo
SlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8u
cGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0
Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9Q
YXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9m
KEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCkpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
VGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Cisg
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2Fk
TG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwog
ICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0
b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIs
IG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMg
dm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVs
IHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKK3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFp
bkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWws
IENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYg
c3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsxNDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQ
cm90b0NoYWluQWNjZXNzU3R1YgogICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwog
ICAgIH0KICAgICAKLSAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlBy
b3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIpOworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZz
ZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVj
dC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQ
Uik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwor
ICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9P
YmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBz
dHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQ
Uik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0
LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0
R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zm
c2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJK
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBy
ZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3Vj
Y2VzcywgZmFpbDsKICAgICAKQEAgLTI1Myw3ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNo
ZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkg
IT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAg
IHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3Bl
cnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNDksMTIgKzM2MCwyMCBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4
ZWNTdGF0CiAgICAgICAgICAgICB8fCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3Bl
cnR5U2xvdDo6Q3VzdG9tKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5
cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNlR1BSICE9IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
ICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsK
LSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAg
ICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0
Y2hHUFIpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNh
Y2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAg
c3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBv
cGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVs
c2UgewpAQCAtMzg1LDEzICs0MDQsMjcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlz
dChFeGVjU3RhdAogICAgICAgICAgICAgaGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAg
ICAgICAgICAgIHN0dWJKaXQuanVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwot
ICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7
CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVz
dWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFn
R1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3Vs
dFRhZ0dQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCByZXN1bHRHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVs
YXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAg
ICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFn
R1BSKTsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtNDUwLDcgKzQ4Myw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3Rv
TGlzdChFeGUKICAgICAKICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwog
ICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50
ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNl
KCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01NjcsNyArNjAwLDcgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VT
dHViKAogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNj
cmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1
Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0g
SW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRp
dmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVk
VG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAgICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BS
KTsKQEAgLTU4NiwyMCArNjE5LDIwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
ICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAg
IGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBz
dHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0
dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2
YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVU
YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVk
T2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2
YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5l
U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAg
ICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAg
QEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9y
ZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KQotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFs
dWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpIHsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkg
KyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHVi
Sml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBv
ZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFs
dWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
c2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2
YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5P
dXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAg
ICAgfQogI2VuZGlmCiAgICAgICAgICAgICAKQEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9v
bCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNh
c2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQorICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkBAIC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wg
dHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNl
IHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
VG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNr
ID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNv
bnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJs
ZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJX
aXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQ
YXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0
IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zm
c2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWRHUFIpOwogICAgIApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3Mo
CiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwg
c3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxv
YWQsCiAgICAgICAgICAgICB0YWdMb2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwg
c2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4o
YmFzZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAg
ICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+
KHNjcmF0Y2hHUFIpLApAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFs
dWVUYWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRj
aEdQUik7CiAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXls
b2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIp
OworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkID0gbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQ
YXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNo
R1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBt
X2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGls
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxv
YWRTdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZh
bHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01
OTcsNyArNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwog
ICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nl
c3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0
cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJl
LCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBh
dGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2Fm
ZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAg
IAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsKQEAgLTM4OTEsOCArMzg5MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNO
b3RNYXRjaCA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBh
eWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAgICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9C
SkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BS
KTsKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkp
KTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5r
KCZtX2ppdCk7CisjZW5kaWYKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNl
SW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1l
c0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpLCByZXN1bHRUYWdHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJh
c2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRp
bWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OTcsNyArNDk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
VG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNr
ID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHJlc3VsdEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHBy
b3BlcnR5U3RvcmFnZUxvYWQgPQorICAgICAgICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBs
b2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNo
KEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAg
ICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcs
OCArNTE4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAg
IH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NS
ZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVj
dHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRv
bmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1
bHRHUFIpLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAg
ICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiks
IHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhf
dD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQ
cm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29y
ZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
LnJlbGVhc2UoKSk7CkBAIC01MzYsNyArNTM3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2
YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0g
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVy
OjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9q
aXQuY29udmVydGlibGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgMCkpOwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVs
KCk7CkBAIC01NjYsNyArNTY4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9S
ZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlm
aWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5
QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hl
Y2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkp
LCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBz
YWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkp
OworICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCgKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0
dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6
RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCks
IGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVD
YXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3
NCw3ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBy
ZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1f
Y29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UK
LSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQ
Uik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRH
UFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOwor
I2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNP
dXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFs
LCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOwor
ICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1f
aml0KTsKKyNlbmRpZgorICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4
KHJlc3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7CiAgICAgICAg
IAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigw
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmhlcml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNj
cmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9m
ZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0
YWJsZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlv
dSdyZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVj
dChjZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpT
Q2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGls
ZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIy
LDcgKzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAg
ICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdy
ZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBp
dAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAt
MTg1MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hl
RwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJh
bWUsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAg
ICAgaWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X2dlbmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJp
dmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZl
X3dpdGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVG
SU5FX09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShv
cF9nZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3Bl
cnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYg
KzM1MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5n
dGg6CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09Q
Q09ERShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRf
YnlfaWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVl
KHIpIG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICsz
NTY3LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUo
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUo
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3
U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikK
ICAgICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAg
ICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFn
ZUlmTmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAg
ICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQg
PSB2UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5v
ZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsK
ICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBA
IC0zNjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZh
bHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQg
PSB2UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0u
dS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
T2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigq
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0g
b2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVl
KCkpOwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAg
SlNWYWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1
ZSgpOwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAg
ICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVk
U3Vic2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5k
ZXgsIG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0g
SlNWYWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAg
ICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfY3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAg
REVGSU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFs
KQpAQCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5F
X09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2Zf
bGluZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92
YXJfY2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0
eVN0dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9j
YXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5m
by5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0
Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVy
ZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51
LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHBy
b3BlcnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBh
dGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1
dEJ5SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2gu
YmFzZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2Vs
aW5lLnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlu
Zm8ucGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxl
cjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNr
OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlT
dG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsQ29tcGFjdCBnZXREaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcg
KzE4NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlT
dHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJv
cGVydHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJ
ZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0
aEJlZ2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBz
dHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxv
YWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgcHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBk
aXNwbGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3Bs
YWNlbWVudExhYmVsMiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVu
dExhYmVsMiwKICNlbmRpZgorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJl
c3VsdCkKICAgICAgICAgICAgIDogbV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBh
dGhCZWdpbikKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRv
Q29tcGFyZSkKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2sp
CisgICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChk
aXNwbGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGls
YXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBh
cmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJv
cGVydHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAg
KQogICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJ
bmRleChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJl
Z2luKQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxv
YWQpCiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBh
cmUpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFi
ZWwoZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRl
Q29tcGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklU
IGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVP
ZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRl
Q29tcGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5
bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXpl
X3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZM
aXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBw
b2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBq
aXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zm
c2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNv
bXBpbGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3Vy
cmVudEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAg
ICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zm
c2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEs
IGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZv
LT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBz
dHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwg
Y2FsbEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJ
ZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBj
dXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4s
IHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0
LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewog
ICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAg
aml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAg
ICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlw
ZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlk
ZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zm
c2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5
dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQu
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNv
dW50LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkK
KyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0
Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICsz
NzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNo
R2V0QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJ
bmZvKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBj
b2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZv
aWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hH
ZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29k
ZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNH
bG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0
cnVjdHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVy
bkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5
TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZh
dGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlv
bkVmZm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0
dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
OwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVj
dHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1
Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0
cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1
Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0
cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZv
KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBT
dHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJl
Y3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0
ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0
cnVjdHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNH
bG9iYWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkg
eyB9CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWws
IEtub3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wg
Z2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3Ay
LCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgo
KTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBp
bnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQg
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVy
SUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZz
ZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3Rl
cklEIG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBz
aXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0
UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywg
UmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwor
ICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9m
ZnNldCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGls
ZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJl
Z2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAg
ICAgICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRk
MzJDb25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBS
ZXN1bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50
aWZpZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRW
UmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAg
IHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hl
ZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQs
IFJlZ2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAg
ICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRy
KFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhl
cml0b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBz
dG9yYWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsK
LSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBz
dG9yYWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQs
IENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAg
ICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBl
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0
cigwKSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFs
bG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQs
MTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAv
LyBWZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3Qp
LCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZv
LCBzdHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3Qs
IG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywg
T0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAg
IGxvYWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBs
b2FkMzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwg
cmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVO
R1RIKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZl
X2dsb2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBM
b2FkIGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0
IGFsd2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJl
Z1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJl
c29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1Qw
LCByZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChy
ZWdUMCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxv
d2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0
aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2lu
dGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdU
SChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8
fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RF
X0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgo
b3BfbWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0g
cGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7
CiAgICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7
CisgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRp
YmxlTG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9y
YWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEg
PSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0
Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJl
bENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09m
ZnNldFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdU
MSk7IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0
QnlJZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVl
bmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5m
by5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQs
IG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJl
c3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3Bl
cnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zm
c2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHBy
b3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwy
LCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChJbnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZElt
bVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJl
KSkpKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHBy
b3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJl
bDMyIGRpc3BsYWNlbWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChy
ZWdUMiwgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXls
b2FkCiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRk
cmVzc09mZnNldFBhdGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0
T2Zmc2V0KSk7IC8vIHRhZwogICAgIApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAs
IHJlZ1QyLCByZWdUMSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbklu
Zm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlk
LCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlz
cGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNj
ZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJv
cGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlz
cGxhY2VtZW50TGFiZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKQEAgLTQzMCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfaWQoSW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2Jq
ZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpj
b21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRh
ZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFs
dWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAg
ICBlbWl0U3RvcmUob2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBp
ZiAoaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOwor
ICAgIGVtaXRTdG9yZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFn
LCB2YWx1ZVBheWxvYWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9i
amVjdCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lu
bGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRp
dmVUb0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1
bHRQYXlsb2FkOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFn
LCByZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5k
ZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQs
IHRlbXApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCog
YmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6
ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2Jq
ZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2Fk
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRy
ZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhy
ZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9h
ZCk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0
KSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQo
Y2FjaGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3Vs
dFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0
UGF5bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFn
ZSgpLCByZXN1bHRUYWcpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5P
dXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3Vs
dFBheWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSAr
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0K
IAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxv
dyBhc3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBj
b250YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQ
VShNSVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9j
YXRlIHByb3BlcnR5IHN0b3JhZ2UgaWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAg
ICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OworICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAg
aWYgKHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5l
IHdhcyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFn
YWluIHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9t
IHRoZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVk
LgpAQCAtNDk5LDcgKzUxMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAg
c3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBB
cmd1bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVk
SW1tMzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0
cihuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1
Myw3ICs1NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywg
Q29kZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12
b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0
QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRj
aEJ1ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6
OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBn
byB0byBKSVRTdHViczo6Y3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRv
IGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlu
a0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9i
eV9pZF9zZWxmX2ZhaWwpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUp
ICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9w
b2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sg
Zm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1
cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwy
KSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0
YWcKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNo
ZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
Z2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQp
KTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0
aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdl
KGNhY2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7
IC8vIHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBi
b29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNv
ZGVCbG9jayk7CiAgICAgCkBAIC01NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRC
eUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9v
cF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGlu
ZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJl
dHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0
X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zm
c2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhl
IG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0
aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZz
ZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9m
ZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBh
eWxvYWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5k
YXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFj
ZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
dGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3Rp
dmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5m
by0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5l
T2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+
aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUucHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
OyAvLyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0
aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3Bf
Z2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBA
IC03MDAsNyArNzEwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0
cgogfQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRz
IGEgSlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwg
c3RydWN0dXJlKTsKQEAgLTc2MCw3ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBD
b2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4Mzks
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGlu
ZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zm
c2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBy
ZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5l
LmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NF
UlQoY291bnQpOwpAQCAtOTc1LDEzICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlv
bihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3Qp
KTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3Rl
cklEIG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVn
aXN0ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAg
QVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBs
b2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQ
dHIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1v
ZGUgPT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVz
c1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJ
bmxpbmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
fSBlbHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUg
PSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0
T2ZMaW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAg
ICBsb2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNl
SW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVz
c0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEs
IE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNs
b3RzKSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAg
ZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92
YWwoSW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6
OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5h
bE9iamVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgo
c2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVv
ZihKU1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJl
RmluYWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZz
ZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0
cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNj
cmF0Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxp
bmsodGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
fSBlbHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUg
PSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0
T2ZMaW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0K
KyAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5l
U3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0
aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVj
dGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSkt
PnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5n
ZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2Rf
Y2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJl
dGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9t
ZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAK
ICAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2sp
OwogICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwpAQCAtMzczLDE0ICszOTAsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0
aChpbnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRT
bG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIENvbnZlcnRp
YmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDAp
OwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENv
bXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVs
dE9mZnNldCksIHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVO
RF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAg
bV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGls
YXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhC
ZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFi
ZWwsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBw
ZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5
dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQp
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpA
QCAtNDQwLDE0ICs0NTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0
aW9uKgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHJlZ1QyKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1l
bnRMYWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMSwgQWRkcmVzcyhy
ZWdUMiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwogCiAgICAgRU5EX1VOSU5URVJSVVBU
RURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVn
VDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFy
cmllckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlv
bkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRC
eUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwg
ZGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
LmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwg
bV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3Bl
cnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQ3MSwyOCArNDg4LDQxIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QKIAogLy8gQ29tcGlsZSBhIHN0
b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhl
CiAvLyB2YWx1ZSBpbiBvYmplY3RSZWcuCi12b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQp
Cit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zm
c2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVz
cyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAg
IHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIG9mZnNldCkpOworICAgIGlmIChpc0lubGlu
ZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVl
KSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRy
ZXNzKGJhc2UsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNo
ZWRPZmZzZXQpKSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJv
cGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBj
YWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7
Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldCksIHJlc3VsdCk7
CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0
cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0KTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVzdWx0LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQog
ewotICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdCk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikpLCByZXN1bHQpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNo
ZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBs
b2FkUHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0KTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zm
c2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKIH0KIAotdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7
CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgpA
QCAtNTIyLDcgKzU1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICNlbmRpZgogICAgIAogICAgIC8vIGVtaXQgYSBjYWxsIG9ubHkgaWYgc3RvcmFnZSByZWFs
bG9jIGlzIG5lZWRlZAotICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdlUmVhbGxvYykgewogICAgICAgICAv
LyBUaGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtlIGEgSklUIHN0dWI7IGJlZm9yZSB3
ZSBjYW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAgICAgICAvLyByZW1vdmUgdGhlIHJl
dHVybiBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2ZW50IHRoZSBzdGFjayBmcm9tIGJl
Y29taW5nIG1pc2FsaWduZWQuCkBAIC01MzIsNyArNTYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsg
Ly8gYmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gaWRlbnQKICAgICAg
ICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVlCi0gICAgICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxs
KHJlZ1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJBcmcoMiwgcmVnVDEpOwpAQCAtNTcyLDcg
KzYwMiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2Rl
TG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQg
SklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hHZXRCeUlk
U2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKGNvZGVCbG9jayk7CiAKQEAgLTU4MCwxNCArNjEwLDEzIEBAIHZvaWQgSklUOjpwYXRjaEdl
dEJ5SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gY3Rp
X29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0
aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24o
cmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsK
IAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAg
ICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9t
LCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVy
ZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0
YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNw
bGFjZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1
Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zm
c2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0
aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNo
UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQ
dXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJl
cGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01OTUsMTEgKzYyNCwx
MCBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hv
dWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24n
dCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/
IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVy
aWMpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7
Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9h
ZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZz
ZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0
cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlz
cGxhY2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3Ry
dWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCks
IGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8t
PnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
QEAgLTY0Myw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5
TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJl
c3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVf
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJv
dG90eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUg
Q29kZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZl
cmVuY2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBp
dCdzIHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3ICs3MzgsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtD
YWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlf
aWRfcHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRl
eCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBK
dW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAg
Ym9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAsNyArNzk4LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAK
LXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5
cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVs
eSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2lu
ZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBv
YmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJs
eSEpCkBAIC04MzksNyArODY3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0
aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5k
ZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBj
b3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQg
Y3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpA
QCAtOTE0LDcgKzk0Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXpl
X3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk1NCw3ICs5NTQsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNh
Y2hlR2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xv
dC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNh
bGxGcmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KTsKICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHN0dWJJbmZvLT5hY2Nlc3NUeXBlID0gYWNj
ZXNzX2dldF9ieV9pZF9nZW5lcmljOwpAQCAtMTQ4NiwxMyArMTQ4NiwxNiBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBz
dGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIGludDMyX3Qgb2xkU2l6ZSA9IHN0YWNr
RnJhbWUuYXJnc1szXS5pbnQzMigpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gc3Rh
Y2tGcmFtZS5hcmdzWzRdLnN0cnVjdHVyZSgpOwotICAgIGludDMyX3QgbmV3U2l6ZSA9IG5ld1N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpbnQzMl90IG5ld1NpemUg
PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgCisgICAgQVNTRVJUKG9s
ZFNpemUgPj0gMCk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIEFTU0VS
VChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChi
YXNlVmFsdWUpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpzdGFja0ZyYW1lLmds
b2JhbERhdGE7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBiYXNlLT5ncm93UHJv
cGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOwotICAgIGJhc2UtPnNl
dFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwor
ICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd091dE9mTGluZVN0b3Jh
Z2UoZ2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CisgICAgYmFzZS0+c2V0T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgcmV0
dXJuIGJhc2U7CiB9CkBAIC0xODE0LDcgKzE4MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihF
bmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgp
KTsKICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNl
KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICBpZiAo
c2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1
cm5BZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3Rp
X29wX2dldF9ieV9pZF9wcm90b19mYWlsKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9i
eV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAg
ICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAg
IHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOwor
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KIApAQCAtOTQwLDcgKzk0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3Qu
YmFzZSgpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQ
dXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBz
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+cHJldmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCkBAIC05NTIs
NyArOTU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVj
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgICAgICAgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAg
ICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAg
ICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90
b3R5cGVDaGFpbihleGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1
Y3R1cmVDaGFpbi5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29m
X2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAg
ICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEs
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOwor
ICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20JKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5
LDI0IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwg
b2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGFzc2VydChtYWNybyAob2spIGJp
Z3RlcSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2Jq
ZWN0QW5kU3RvcmFnZQorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2Fw
YWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9y
YWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCittYWNybyBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcs
IHBheWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5
LCAuaXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVj
dEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgam1wIC5yZWFkeQorLmlzSW5saW5l
OgorICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVTdG9yYWdlICsgSW5saW5lU3RvcmFn
ZUNhcGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJlYWR5OgorICAgIGxvYWRpIFRhZ09m
ZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVy
dHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0
b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxv
YWQKK2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5k
cyBhcmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2Fk
LgpAQCAtOTMwLDkgKzk0OCw3IEBAIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMTJbUENd
LCBzbG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCi0g
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0
VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKQogICAgIGxvYWRpIDRb
UENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMTAzLDQ0IEBAIF9s
bGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGlu
dF9vcF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hp
bmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4gV2UgZG8sIGhv
d2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNp
bmNlCisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhl
IGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcg
Y2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisjIHdlIHdv
dWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlT
dG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBo
aWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCi0g
ICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5n
ZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0
IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKLSAgICAj
IHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xv
dyBwYXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55
d2F5LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93
KQogICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9w
R2V0QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQyXSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0gICAgc3RvcmVp
IHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0
MiwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAg
IHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRj
aCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQorICAgICAgICAgICAgbG9hZGkg
VGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkaSAzMltQQ10sIHQx
CisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAgICAgICAgICAg
ZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorCisgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgZGlzcGF0
Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElubGlu
ZVN0b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xs
aW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1OSw5NiBAQCBfbGxp
bnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRf
b3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1
dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQot
ICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAor
ICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2Us
IHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEs
IC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAg
ICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwg
VGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkp
CisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQo
d2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8g
cHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQ
Q10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQw
LCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVj
a3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykK
ICAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAg
ICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAg
ICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAg
ICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0
MSwgdDIpCisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAg
IGxvYWRpIDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0
M10KKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9u
YWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNo
YWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBv
bGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhl
IHByb3RvCisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9r
KSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVj
dG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtv
bGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRw
IDQsIHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3Jv
IChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlv
bihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5z
aXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KAotICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAg
ICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1
Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRw
IDI4W1BDXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2Ny
YXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBz
Y3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6
Ci0gICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRT
dHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0g
ICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0
cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9y
YWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xp
bmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRP
ZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzE4
LDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQw
CiAgICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpt
X251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0Miwg
dDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBh
ZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BD
XSwgdDAKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEy
MTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4LDIyIEBAIF9sbGludF9vcF9pc19z
dHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFs
dWUpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVT
dG9yYWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVT
dG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgLTgg
KiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQs
IDhdLCB2YWx1ZQorZW5kCisKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJv
cGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlP
ZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFn
ZQorICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1f
aW5saW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3Jh
Z2UKKy5yZWFkeToKKyAgICBsb2FkcCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RB
bmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAg
IyA4W1BCLCBQQywgOF0gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArODA1
LDcgQEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAg
ICAgbG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJv
cGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4
XSwgdDAKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkg
KiA4W1BCLCBQQywgOF0sIHQwCkBAIC05MzcsNyArOTUyLDcgQEAgX2xsaW50X29wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoK
K21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywg
YW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBh
bGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAt
OTQ4LDE4ICs5NjMsMzAgQEAgX2xsaW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwg
UEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0
QnlJZFNsb3cpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEK
LSAgICBsb2FkcCBbdDAsIHQyXSwgdDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAg
IGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBk
aXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAg
IHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAg
ICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAg
ICAgICAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9w
ZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtj
ZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAg
ICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisg
ICAgICAgIGVuZCkKKyAgICAgICAgICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNo
KDkpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVT
dG9yYWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9pZF9v
dXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2NSArMTAwNSw5MyBAQCBfbGxpbnRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3Bf
cHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIs
IFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1
dEJ5SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0
MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQotICAgIHdyaXRlQmFycmllcih0
MCkKLSAgICBzdG9yZXAgdDAsIFt0MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9w
ZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHBy
b3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA0MFtQQiwg
UEMsIDhdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRj
aCkKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKKyAgICAgICAgICAgIHN0b3JlcCBzY3Jh
dGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAg
ICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElu
bGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRU
cmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9s
aW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMy
W1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAu
b3BQdXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25h
bENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzKQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSkKLSAgICB3cml0ZUJhcnJpZXIodDEpCi0gICAgc3RvcmVwIHQx
LCBbdDNdCi0gICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEKLSAgICBzdG9yZXAgdDEsIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3Jh
Z2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3Rv
cmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMK
KyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQorICAgICAgICAgICAg
d3JpdGVCYXJyaWVyKHQxKQorICAgICAgICAgICAgc3RvcmVwIHQxLCBbdDNdCisgICAgICAgICAg
ICBsb2FkcCA0OFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQor
ZW5kCisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitl
bmQKKworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQor
ICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0
cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwg
c2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAg
ICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBh
c3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgYnBlcSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKKy5sb29wOgor
ICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxs
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUK
KyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBh
ZGRwIDgsIHNjcmF0Y2gKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVj
dHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0
cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRk
aXRpb25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihu
b0FkZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAg
ICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25z
dCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUg
cmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwg
c2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sg
ZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hd
LCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCi0gICAgICAgICAgICBicGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0
dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRw
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAg
ICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQot
ICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAg
ICAgIGFkZHAgOCwgc2NyYXRjaAotICAgICAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAg
ICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdp
dGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVj
a3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAt
MTEwNiw4ICsxMTYxLDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwogICAgIHN1YmkgMSwgdDMKICAgICBiaWFlcSB0Mywg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0MV0sIC5vcEdldEJ5
UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAK
LSAgICBsb2FkcCBbdDAsIHQzLCA4XSwgdDAKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fb2Zmc2V0QmFzZVt0MV0sIHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MywgdDAsIHQwKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgc3RvcmVwIHQw
LCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCg3KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBAQCBjb25zdCBMTEludFJldHVyblBD
ID0gQXJndW1lbnRDb3VudCArIFRhCiAjIFN0cmluZyBmbGFncy4KIGNvbnN0IEhhc2hGbGFnczhC
aXRCdWZmZXIgPSA2NAogCisjIFByb3BlcnR5IHN0b3JhZ2UgY29uc3RhbnRzCitpZiBKU1ZBTFVF
NjQKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA0CitlbHNlCisgICAgY29uc3Qg
SW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gNgorZW5kCisKICMgQWxsb2NhdGlvbiBjb25zdGFudHMK
IGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEK
QEAgLTMxMiw4ICszMTksNyBAQCBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNz
SW5kCiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIHN0
cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBK
U09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAgICAgIGFkZHAgc2l6ZW9mIEpTT2Jq
ZWN0LCByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0Ojpt
X291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XQogICAgIGVuZAogZW5kCiAKQEAgLTQ4MSw2ICs0ODcs
MjEgQEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgogICAgIGRpc3BhdGNoKDUpCiAKIAor
bWFjcm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVh
dGlvbikKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgcHJvcGVydHkgc3Rv
cmFnZSwgYW5kIHRoYXQgdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlIHJlZ2lzdGVyIGlzIHVu
dXNlZC4KKyAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UpCitlbmQKKwor
bWFjcm8gd2l0aE91dE9mTGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRp
bnVhdGlvbikKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdF0s
IHByb3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdl
IHJlZ2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQg
dGhhdCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmpl
Y3QgcG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3Bl
cnR5U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKKwogX2xsaW50X29wX2RlbF9ieV9pZDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5
X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNp
b24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3
b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAg
ZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5k
cy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5p
c19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBA
IC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAk
YXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEj
e3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJ
bW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0
dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZTsKLSAgICAgICAgc2l6ZV90IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwpAQCAtMjYyLDcgKzI2
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAg
ICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Jv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBuYW1lZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9Ci0gICAgICAgIHNpemVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBmdW5j
dGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQog
ICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJp
dmF0ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9pZCBKU09iamVjdDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xh
dGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAgICAg
dmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2Vu
ZGlmCisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OworCisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVT
dG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXpl
ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFs
T2JqZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xh
a2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5
cGUtcHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKKyAgICAg
ICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwg
c3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9m
TGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOworICAg
IH0KKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7CiAKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdh
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CisjZW5kaWYKK30KKwordm9pZCBKU0Zp
bmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2Jq
ZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
ID0gZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmpl
Y3QtPnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgaWYgKHRoaXNPYmpl
Y3QtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ug
c3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFn
ZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKICAgICAgICAgLy8gV2UgaGF2
ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9v
ZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAg
IHZvaWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRl
bXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICog
c2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3Jh
Z2VTaXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CiAgICAgICAgIHN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotICAgICAgICB0aGlz
T2JqZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVu
Y2hlY2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3Rv
cmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNP
YmplY3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOworICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0b3JhZ2UoKSwgc3RvcmFnZVNpemUp
OworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwog
I2VuZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7IDsgb2JqID0g
YXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
ICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBvYmot
PnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAg
ICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0yNzIsNyAr
MzAyLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogCiAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYg
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKKyAg
ICBpZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsK
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRlICYmICFleGVjLT5nbG9iYWxEYXRh
KCkuaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSk7CkBAIC0zOTQsNyArNDI0LDcgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0Vu
dW1lcmFibGUoRXhlYwogYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lm
aWNWYWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChzdHJ1
Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChpc1ZhbGlkT2Zmc2V0
KHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBU
aGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxk
IHByb2JhYmx5CkBAIC01MTYsMjAgKzU0NiwyMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRp
Y0Z1bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5k
KQorICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3Qgb2Zmc2V0
OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJl
bW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0
ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG9mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OSwyNSAr
NTg5LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEoKICAgICBy
ZXR1cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0
Ojpncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9s
ZFNpemUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93T3V0
T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBz
aXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAg
Ly8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVy
ZSgpLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0
aW9uLgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2Ug
PSBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3Bl
cnR5U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAg
IGlmICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRy
YSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ug
d2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1w
ID0gbmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC50cnlB
bGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pICogbmV3U2l6
ZSwgJnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgbmV3UHJvcGVydHlTdG9y
YWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLQotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3UHJvcGVy
dHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ldOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0
IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50
ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVydHlTdG9yYWdlOwpAQCAtNTk0LDgg
KzYyMSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKIHsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNp
emVfdCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwotICAgIGlmIChvZmZzZXQgPT0gV1RG
Ojpub3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVy
ZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNl
bGwpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihvYmplY3QtPmdldERpcmVjdE9mZnNl
dChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTggKzc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBY2Nlc3NvciAgICAgPSAx
IDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0ZXIKICAgICB9OwogCi0jaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNp
dHkgNgotI2Vsc2UKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
NAotI2VuZGlmCi0KLUNPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VD
YXBhY2l0eSA+PSAwKSwgZmluYWxfc3RvcmFnZV9ub25fbmVnYXRpdmUpOworICAgIGNsYXNzIEpT
RmluYWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxv
Y2s7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtMTY5LDI2ICsxNjQsNzIgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5j
dGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0
RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBv
ZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1
ZSgpOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zm
c2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1Zh
bHVlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBn
ZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDog
MDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNl
dCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBv
ZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwog
ICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0
TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxs
KiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0K
IAotICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCk7IH0KKyAgICAgICAg
Q29uc3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+
KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZVVuc2FmZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbiAtIHBy
b3BlcnR5U3RvcmFnZSgpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0
eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBDb25zdFByb3BlcnR5U3Rv
cmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVu
c2FmZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdl
KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdl
dCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAg
ICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAg
IHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsK
KyAgICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAg
ICAgICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9y
YWdlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKSArIGZpcnN0
T3V0T2ZMaW5lT2Zmc2V0OworICAgICAgICAgICAgdmFsaWRhdGVPZmZzZXQocmVzdWx0LCBzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2Jq
ZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAg
ICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1Zh
bHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkg
eyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7
IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0
KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KKyAgICAgICAg
SlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQorICAgICAgICB2b2lkIHB1
dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCkBAIC0yMjgsMjQg
KzI2OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAg
ICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5z
dGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0
aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNp
emVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGlu
ZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9Ci0g
ICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdldCgpCi0gICAgICAgICAgICAgICAg
fHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBz
dGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgc2V0UHJvcGVydHlTdG9y
YWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93T3V0T2ZMaW5lU3RvcmFnZShK
U0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICB2
b2lkIHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBT
dHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVhbGxvY2F0ZVN0b3JhZ2VJZk5l
Y2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7
CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2Fy
eShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAg
ICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0
eVN0b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAg
ICAgIHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0y
NjEsNyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rvcgog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5l
U3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdl
KCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCk7CiAg
ICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0
YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC0yNzEsNyArMzA0
LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB7
CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxs
KCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0KCkpOwpAQCAtMjg3LDcgKzMyMCw3
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgICAgICAv
LyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBi
ZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50
IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpT
T2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgdm9p
ZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAtMzA1LDE5ICszMzgsNiBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmpl
Y3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQ
cm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFn
ZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0KLSAgICAgICAgY29uc3Qg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2Uo
KVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KICAgICAg
ICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3Bl
cnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3LDcgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQ
cm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAg
ICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAg
IFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmll
ciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
aW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICszNzMsMTQgQEAgQ09NUElMRV9BU1NF
UlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBl
eHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQog
ICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVy
ZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGhp
cy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNT
RVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0zODEsNiArNDAxLDggQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAg
ICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9S
VERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJ
bmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9CSkVDVF9PRkZTRVRPRihK
U0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAg
ICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBB
U1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxT
dG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogICAgICAgICAgICAg
QVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBAIC00MDAsMTMgKzQyNSwxMyBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBK
U0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxp
bmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
CiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGlu
ZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9p
bmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZXTsKICAgICB9OwogCiBpbmxpbmUg
SlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkgQEAgaW5saW5lIHNpemVfdCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5h
bE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2Jq
ZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09i
amVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5NiwxOCBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIEpTT2Jq
ZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFTU0VSVChz
dG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpT
RmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2b2lkKj4oc3RvcmFnZSkgPT0gc3Rh
dGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VS
VCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0
aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNTE2LDkgKzU0NSw5
IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4g
YXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNDZWxsKGds
b2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEs
IHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEsNiBAQCBpbmxpbmUgU3RydWN0dXJl
KiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGds
b2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNh
cGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6
OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFj
aXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCk7Ci19Ci0KIGlubGluZSBi
b29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25zdAogewogICAg
IHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGluZm8pOwpAQCAtNjExLDEwICs2Mjcs
MTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lO
TElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwo
KS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgp
LT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgp
LT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBX
VEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAg
ICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkt
PmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY5Miw4IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0
dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1
dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlm
IChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0
dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkg
YSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAg
ICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAg
ICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rp
b24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAtNzAwLDEzICs3MTYsMTQgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICBpZiAoKG1vZGUg
PT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9y
YWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3Jh
Z2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUo
KS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgUHJvcGVydHlT
dG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgIGlmIChzdHJ1
Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdT
dG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9y
YWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogCi0gICAgICAgIEFTU0VSVChv
ZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAg
IHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNW
YWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEs
IG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0
eSBjYWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC03MTQsMTUg
KzczMSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgc2l6ZV90
IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5
ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSog
c3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3Ry
dWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3Jh
Z2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0g
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgbmV3U3Rv
cmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBz
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotCi0gICAgICAgIEFTU0VSVChv
ZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBz
ZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7IAor
ICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9i
YWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CisKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFn
ZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RP
ZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBu
ZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3Vy
cmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNh
Y2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBK
U0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVu
dFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgewor
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0g
UHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCks
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAg
ICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGlyZWN0
T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs4MDAsMjIgQEAg
aW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9pZCBK
U09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2FwYWNp
dHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgaWYg
KG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAg
ICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dQ
cm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3RvcmFn
ZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3Rv
cmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2JhbERh
dGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAg
IHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJl
KTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVT
dG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVj
ZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29s
IEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIFBy
b3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYgKHN0
cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdTdG9y
YWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3Rv
cmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
Z2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2ls
bEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZM
aW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxh
YmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBu
ZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEs
IG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1LDYgQEAgaW5saW5lIHZvaWQgSlNW
YWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6ZnVuY3Rpb24oKSBjb25z
dAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYgKzkzOSwzMiBAQCBBTFdBWVNfSU5M
SU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAgcmV0dXJuIHI7CiB9CiAKKy8vIFRo
aXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBh
IGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoKKy8vIEZvciBpbmxpbmUgb2Zmc2V0
czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCisvLyBGb3Ig
b3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2Uu
CitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAg
ICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSArIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGlu
dCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAo
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAgICByZXR1cm4gSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9m
ZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgaW50IG9mZnNldFJlbGF0
aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVP
ZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMgPSAwOwog
ICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYg
IW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAgJiYg
IW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51
bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsK
KyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdl
U2l6ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1l
SXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0
eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwotICAgIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKKyAgICBq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVz
LmRhdGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQog
ICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICAgICAgc3Rh
dGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCop
OwotICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNp
emVfdCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAg
ICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRh
KTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgCkBAIC02MywxMSArNTcsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBp
bnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpID49IG1fbnVtQ2FjaGVh
YmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgb2Zm
c2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBtX29mZnNldEJhc2U7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04OCwxMiArODIsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAg
cHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEq
IHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAg
ICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0
eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3Rvcigp
OwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsr
aSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5n
KCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVjdC0+c3RydWN0dXJlKCktPmZp
cnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNSw2ICsx
MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNo
YWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNhY2hl
YWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAog
ICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0g
V1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiBqc0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBzbG90T2Zmc2V0KQorICAgIGlubGluZSBzaXpl
X3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eU9mZnNldCYgc2xvdE9mZnNldCkKICAgICB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IGJhc2UuYXNDZWxsKCk7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU51bWJlck9mR0NNYXJr
ZXJzCiAgICAgcmV0dXJuIGNwdXNUb1VzZTsKIH0KIAotCiBPcHRpb25zOjpFbnRyeSBPcHRpb25z
OjpzX29wdGlvbnNbT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25zXTsKIAogLy8gUmVhbGl6ZSB0aGUg
bmFtZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6CkBAIC0xMTksMTEgKzExOCwxMSBAQCBjb25z
dCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpCiB2b2lkIE9wdGlvbnM6OmluaXRp
YWxpemUoKQogewogICAgIC8vIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRo
ZWlyIGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfKSBcCisjZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8s
IGRlZmF1bHRWYWx1ZV8pICAgIFwKICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsKICAgICBK
U0NfT1BUSU9OUyhGT1JfRUFDSF9PUFRJT04pCiAjdW5kZWYgRk9SX0VBQ0hfT1BUSU9OCi0KKyAg
ICAgICAgCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFycyB0byBvdmVycmlkZSBvcHRpb25z
IGlmIGFwcGxpY2FibGUuCiAgICAgLy8gVGhlIGV2biB2YXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9m
IHRoZSBvcHRpb24gcHJlZml4ZWQgd2l0aAogICAgIC8vICJKU0NfIi4KQEAgLTEzMiw5ICsxMzEs
MTIgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICBvdmVycmlkZU9wdGlvbldpdGhI
ZXVyaXN0aWMobmFtZV8oKSwgIkpTQ18iICNuYW1lXyk7CiAgICAgSlNDX09QVElPTlMoRk9SX0VB
Q0hfT1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgotICAgIAogI2VuZGlmIC8vIFJVTl9U
SU1FX0hFVVJJU1RJQ1MKIAorI2lmIDAKKyAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQg
ZG8gYXV0byBpbmRlbnRhdGlvbgorI2VuZGlmCisgICAgCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tz
IHdoZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAgICBB
U1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hvbGRG
b3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6
ZUFmdGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAj
aWZuZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFi
bGVfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgpA
QCAtNzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQg
dikKIAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKLSAg
ICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsK
IAotICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAgICAg
ICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQsOCArMTc1LDEwIEBAIHB1YmxpYzoK
ICAgICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUg
cHJvcGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBi
b29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7
Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgUHJvcGVy
dHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0IG5leHRPZmZz
ZXQoSlNUeXBlIHR5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFibGUsIGVuc3Vy
aW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQuCiAgICAgUGFz
c093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIs
IHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAgICAgdW5zaWdu
ZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+ID4gbV9kZWxl
dGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4gPiBtX2RlbGV0
ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1UYWJsZVNpemUg
PSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4ID0gMDsKQEAg
LTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0ds
CiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAg
VmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zm
c2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRl
ZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9m
ZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9i
YWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQ
cm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUgUHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zm
c2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5
T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0
KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNl
dHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykp
OworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFi
bGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGluZSBib29sIFBy
b3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAm
JiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5zaWduZWQgUHJv
cGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJv
cGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0g
bV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1f
ZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5yZW1vdmVMYXN0
KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6
YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRh
YmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAo
IW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0
cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBw
ZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpu
ZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zmc2V0KCkpCisg
ICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYgKHR5cGUgPT0g
RmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAorICAgIHJldHVy
biBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAgIEFTU0VSVChu
ZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBpbmxpbmUgc2l6
ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IHNp
emVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVsZXRlZE9mZnNl
dHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNp
emVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNh
cGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9m
ZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByb3BlcnR5
T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAiSlNUeXBlLmgi
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNl
bHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgorCit0eXBlZGVm
IGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFs
aWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0
eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKwor
Ly8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBm
b3J3YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KTsKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNU
eXBlIHR5cGUpOworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KTsKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
SlNUeXBlIHR5cGUpOworaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpOworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KTsKK2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7
CitpbmxpbmUgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KTsKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZk91dE9mTGluZVNsb3Rz
Rm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1i
ZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBl
KTsKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSk7CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQ
cm9wZXJ0eU9mZnNldEZvcihKU1R5cGUgdHlwZSk7CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAg
ICBBU1NFUlQob2Zmc2V0ID49IGludmFsaWRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBjaGVj
a09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIFVOVVNF
RF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBBU1NFUlQob2Zm
c2V0ID49IGludmFsaWRPZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dAorICAgICAgICAgICB8fCB0eXBlID09IEZpbmFsT2JqZWN0VHlwZQorICAgICAgICAgICB8fCBp
c091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7Cisg
ICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlk
YXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hl
Y2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQp
KTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
Cit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQ7Cit9CisKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQg
PCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7Cit9CisKK2lubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOwor
ICAgIHJldHVybiAhaXNJbmxpbmVPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVfdCBv
ZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlk
YXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpOwor
ICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZz
ZXQpOworICAgIEFTU0VSVChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4g
b2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0
SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbklubGluZVN0b3Jh
Z2Uob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7
Cit9CisKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAg
aWYgKG9mZnNldCA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KQorICAgICAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQgKyAxOworfQorCitpbmxpbmUg
c2l6ZV90IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
SlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBlKTsKKyAgICBpZiAo
dHlwZSA9PSBGaW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyAxOworICAg
IHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChvZmZzZXQpOworfQor
CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0eXBl
KTsKKyAgICBpZiAodHlwZSAhPSBGaW5hbE9iamVjdFR5cGUgJiYgb2Zmc2V0ID09IGludmFsaWRP
ZmZzZXQpCisgICAgICAgIHJldHVybiBmaXJzdE91dE9mTGluZU9mZnNldDsKKyAgICByZXR1cm4g
b2Zmc2V0ICsgMTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZz
ZXRGb3IoSlNUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIG5leHRQcm9wZXJ0eU9mZnNldEZvcihp
bnZhbGlkT2Zmc2V0LCB0eXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBQcm9wZXJ0eU9mZnNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMs
NyBAQAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgor
I2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtODks
NyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNh
Y2hlZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9
CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3Bl
cnR5VHlwZSAhPSBVbmNhY2hlYWJsZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQotICAgICAg
ICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVh
YmxlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwpAQCAtMTA0LDcgKzEwNSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFs
dWUgdmFsdWUsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBz
bG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEpT
Q19WQUxVRV9NQVJLRVI7CkBAIC0xNjAsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBtX2RhdGEuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmpl
Y3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWFi
bGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJG
dW5jKTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwpA
QCAtMjA2LDcgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBDbGVhciBvZmZzZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFBy
b3BlcnR5U2xvdCBoYXMgYmVlbiB1c2VkIGJlZm9yZS4KICAgICAgICAgICAgIC8vIChGb3Igb3Ro
ZXIgZGF0YSBtZW1iZXJzLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2Ug
cmV1c2Ugd291bGQgbWVhbmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1f
b2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAg
ICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBlID0gVW5jYWNoZWFibGU7CiAgICAgICAgIH0KIApA
QCAtMjMyLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFs
dWU7CiAgICAgICAgIEpTVmFsdWUgbV90aGlzVmFsdWU7CiAKLSAgICAgICAgc2l6ZV90IG1fb2Zm
c2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICAgICAgQ2FjaGVkUHJv
cGVydHlUeXBlIG1fY2FjaGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAx
MjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNP
YmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9w
ZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBtX3R5cGUgPSBFeGlzdGluZ1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNl
ID0gYmFzZTsKICAgICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkK
KyAgICAgICAgdm9pZCBzZXROZXdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3R5cGUgPSBOZXdQcm9wZXJ0eTsK
ICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSAhPSBVbmNhY2hhYmxlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25z
dCB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKICAgICAg
ICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNl
dDsKICAgICAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2
YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKLSAg
ICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsK
ICAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Niw4ICsxNTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAg
ICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50
U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KHR5cGVJbmZvLmlzRmluYWxPYmplY3QoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNh
cGFjaXR5IDogMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVD
YXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlv
bmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0x
NzksOCArMTc5LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQog
ICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2Ns
YXNzSW5mbygmc19pbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFs
aXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQotICAgICwg
bV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDApCisgICAgLCBt
X29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlv
bmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1f
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTIwMCw4ICsyMDAsOCBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3Byb3RvdHlwZShn
bG9iYWxEYXRhLCB0aGlzLCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2Ns
YXNzSW5mbyhwcmV2aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBv
aW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KHByZXZpb3VzLT5tX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KQotICAgICwgbV9vZmZzZXQo
bm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX291dE9mTGlu
ZUNhcGFjaXR5KQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlv
bmFyeUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJv
cGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2
aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZv
aWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVj
dHVyZS0+bV9wcmV2aW91cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVj
dHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7
CisgICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJs
ZS0+Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNl
dCwgbV90eXBlSW5mby50eXBlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
QEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChKCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgIGNyZWF0ZVBy
b3BlcnR5TWFwKG1fb2Zmc2V0ICsgMSk7CisgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKG51bWJl
ck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkpOwogCiAg
ICAgZm9yIChwdHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkp
IHsKICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKQEAgLTI1NiwyMSArMjU2LDIx
IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiB9CiAK
LWlubGluZSBzaXplX3QgbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50
Q2FwYWNpdHkpCitpbmxpbmUgc2l6ZV90IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoc2l6
ZV90IGN1cnJlbnRDYXBhY2l0eSkKIHsKICAgICBpZiAoIWN1cnJlbnRDYXBhY2l0eSkKICAgICAg
ICAgcmV0dXJuIDQ7CiAgICAgcmV0dXJuIGN1cnJlbnRDYXBhY2l0eSAqIDI7CiB9CiAKLXZvaWQg
U3RydWN0dXJlOjpncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKQordm9pZCBTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpCiB7Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSA9IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KTsKKyAgICBtX291dE9mTGluZUNhcGFjaXR5ID0gbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0
eShtX291dE9mTGluZUNhcGFjaXR5KTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVk
TmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpCitzaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKQogewotICAgIHJldHVybiBuZXh0UHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgcmV0dXJuIG5leHRP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAgCiB2b2lk
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTI4Nyw3ICsyODcsNyBAQCB2
b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0CiAgICAgZW50cnktPnNwZWNp
ZmljVmFsdWUuY2xlYXIoKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0
dXJlLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7
CkBAIC0yOTYsNyArMjk2LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJblByZXZpb3VzID0gZXhpc3RpbmdU
cmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpOwogICAgICAgICBpZiAo
c3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgJiYgc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgIT0gc3Bl
Y2lmaWNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NFUlQoZXhpc3Rp
bmdUcmFuc2l0aW9uLT5tX29mZnNldCAhPSBub09mZnNldCk7CisgICAgICAgIHZhbGlkYXRlT2Zm
c2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV90eXBlSW5mby50
eXBlKCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0Owog
ICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOwogICAgIH0KQEAgLTMwNCw3ICszMDQs
NyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgcmV0dXJu
IDA7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUg
YSBzcGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhl
cmUgaXMKICAgICAvLyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnR5IG5hbWUgYW5kIGF0dHJpYnV0ZXMsIGJ1dApAQCAtMzI3LDggKzMyNyw4IEBAIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgU3RydWN0dXJlKiB0cmFu
c2l0aW9uID0gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24pOwogICAgICAg
ICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmICh0cmFuc2l0
aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQotICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCk7CisgICAgICAgIGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVTaXplKCkgPiB0cmFu
c2l0aW9uLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jv
d091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0K
ICAgICAKQEAgLTM1MywxNSArMzUzLDE1IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXQKICAgICB9CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZp
Y1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSk7Ci0gICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRp
b24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIHRyYW5zaXRpb24tPmdyb3dQ
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGlmICh0cmFuc2l0aW9uLT5vdXRPZkxpbmVT
aXplKCkgPiB0cmFuc2l0aW9uLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICB0cmFuc2l0
aW9uLT5ncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKIAogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0
ID0gb2Zmc2V0OwogICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKGdsb2JhbERh
dGEsIHRyYW5zaXRpb24pOwogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1TdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHNp
emVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewogICAgIEFT
U0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIApAQCAtNTQ4LDE4
ICs1NDgsMTkgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogCiAg
ICAgICAgIHNpemVfdCBwcm9wZXJ0eUNvdW50ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CiAg
ICAgICAgIFZlY3RvcjxKU1ZhbHVlPiB2YWx1ZXMocHJvcGVydHlDb3VudCk7Ci0KKyAgICAgICAg
CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdE9m
ZnNldCA9IGZpcnN0UHJvcGVydHlPZmZzZXRGb3IobV90eXBlSW5mby50eXBlKCkpOwogICAgICAg
ICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwog
ICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFi
bGUtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsraSkgewogICAgICAgICAgICAgdmFs
dWVzW2ldID0gb2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoaXRlci0+b2Zmc2V0KTsKICAgICAgICAg
ICAgIC8vIFVwZGF0ZSBwcm9wZXJ0eSB0YWJsZSB0byBoYXZlIHRoZSBuZXcgcHJvcGVydHkgb2Zm
c2V0cwotICAgICAgICAgICAgaXRlci0+b2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGl0ZXItPm9m
ZnNldCA9IGkgKyBmaXJzdE9mZnNldDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
Q29weSB0aGUgb3JpZ2luYWwgcHJvcGVydHkgdmFsdWVzIGludG8gdGhlaXIgZmluYWwgbG9jYXRp
b25zCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50OyBpKysp
Ci0gICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBpLCB2YWx1
ZXNbaV0pOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
Zmlyc3RPZmZzZXQgKyBpLCB2YWx1ZXNbaV0pOwogCiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+
Y2xlYXJEZWxldGVkT2Zmc2V0cygpOwogICAgIH0KQEAgLTU2OCw3ICs1NjksNyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAK
LXNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCkBAIC01
NzksMTMgKzU4MCwxMyBAQCBzaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
CiAgICAgCiAgICAgcGluKCk7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1
ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwot
ICAgIGlmIChwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KQotICAgICAgICBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgaWYgKG91dE9mTGluZVNpemUoKSA+IG91
dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAg
IHJldHVybiBvZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBBU1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAg
QVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwpAQCAtNTkzLDggKzU5NCw3IEBAIHNpemVfdCBT
dHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFQKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5
TWFwSWZOZWNlc3NhcnlGb3JQaW5uaW5nKGdsb2JhbERhdGEpOwogCiAgICAgcGluKCk7Ci0gICAg
c2l6ZV90IG9mZnNldCA9IHJlbW92ZShwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBvZmZzZXQ7
CisgICAgcmV0dXJuIHJlbW92ZShwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6
cGluKCkKQEAgLTYzOSwyMCArNjM5LDIwIEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3Ry
dWN0dXJlOjpjb3AKIAogUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQ
cm9wZXJ0eVRhYmxlRm9yUGlubmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogb3duZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQ
cm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQ
cm9wZXJ0eVRhYmxlKG1fb2Zmc2V0ID09IG5vT2Zmc2V0ID8gMCA6IG1fb2Zmc2V0KSk7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG51bWJl
ck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkpKTsKIH0K
IAotc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNp
ZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNl
c3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAg
IFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5
TmFtZS51aWQoKSkuZmlyc3Q7CiAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgYXR0cmlidXRl
cyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwogICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lm
aWNWYWx1ZS5nZXQoKTsKQEAgLTY4NSw5ICs2ODUsOSBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5QWxsRnVuY3Rpb25zKEpTCiAgICAgICAgIGl0ZXItPnNwZWNpZmljVmFsdWUuY2xlYXIoKTsK
IH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3Bl
Y2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKLSAg
ICBBU1NFUlQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOworICAg
IEFTU0VSVCghSlNDOjppc1ZhbGlkT2Zmc2V0KGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUp
KSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250
RW51bSkKQEAgLTY5OCwxMiArNjk4LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNW
YWx1ZShKU0dsbwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICBjcmVhdGVQcm9w
ZXJ0eU1hcCgpOwogCi0gICAgdW5zaWduZWQgbmV3T2Zmc2V0OwotCi0gICAgaWYgKG1fcHJvcGVy
dHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQotICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3Bl
cnR5VGFibGUtPmdldERlbGV0ZWRPZmZzZXQoKTsKLSAgICBlbHNlCi0gICAgICAgIG5ld09mZnNl
dCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNl
dCA9IG1fcHJvcGVydHlUYWJsZS0+bmV4dE9mZnNldChtX3R5cGVJbmZvLnR5cGUoKSk7CiAKICAg
ICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGdsb2JhbERhdGEsIHRoaXMs
IHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSk7CiAKQEAgLTcxMSw3
ICs3MDYsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvCiAgICAg
cmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAt
NzI0LDcgKzcxOSw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHIK
ICAgICBpZiAoIXBvc2l0aW9uLmZpcnN0KQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OwogCiAgICAgbV9wcm9wZXJ0eVRh
YmxlLT5yZW1vdmUocG9zaXRpb24pOwogICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkRGVsZXRlZE9m
ZnNldChvZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsK
IAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsK
LSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
OwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3Bl
cnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1
dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0xMDMsMzIgKzEwMywzMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAgYm9v
bCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50RXh0ZW5zaW9uczsgfQog
ICAgICAgICBib29sIGRpZFRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RpZFRyYW5zaXRp
b247IH0KLSAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpCisgICAgICAg
IGJvb2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gcHJvcGVydHlTdG9yYWdlU2l6
ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IG91dE9mTGlu
ZVNpemUoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxl
KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGN1cnJlbnRTaXplID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9m
ZnNldChtX29mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5
KCkgPj0gY3VycmVudFNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2l6ZSA9
PSBvdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9y
YWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7
CiAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBB
U1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBh
Y2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBt
X3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAg
ICB9Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdQcm9wZXJ0
eVN0b3JhZ2VTaXplKCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAogCiAgICAgICAgIFN0cnVjdHVyZSog
ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNl
IHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zm
c2V0IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBt
X3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlL
aW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTQ5LDE4ICsxNDksMTE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3By
ZXZpb3VzLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0g
JnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKKyAgICAgICAg
fQogICAgICAgICBib29sIHRyYW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBz
dHJ1Y3R1cmVUb0ZpbmQpOwogCi0gICAgICAgIHZvaWQgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCk7Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgY29uc3Qg
eyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsgfQotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOyByZXR1cm4gKG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlT
dG9yYWdlU2l6ZSgpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSkpOyB9Ci0g
ICAgICAgIHNpemVfdCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdDsKLSAgICAgICAgYm9v
bCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdCBnZXQoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERh
dGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgdm9pZCBncm93T3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZz
X2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CisgICAgICAg
IH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0g
RmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3Bl
cnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5l
U3RvcmFnZUNhcGFjaXR5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVT
aXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSAhPSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAg
ICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0
eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVy
T2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAg
ICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAg
ICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFs
U2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gdGhpcy0+aW5saW5lQ2FwYWNpdHkoKTsK
KyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUg
LSBpbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1i
ZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAg
ICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZTsKKyAgICAgICAg
fQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFs
T2JqZWN0VHlwZSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQ7CisgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVydHlU
YWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3Jh
Z2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAg
ICAgdW5zaWduZWQgaW5saW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghaGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgcmV0dXJuIGlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgICAgIH0K
KyAgICAgICAgdW5zaWduZWQgdG90YWxTdG9yYWdlU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
cHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgcmV0dXJu
IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7
CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgdG90YWxTdG9yYWdlQ2FwYWNpdHkoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lQ2FwYWNpdHkgKyBp
bmxpbmVDYXBhY2l0eSgpOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmly
c3RWYWxpZE9mZnNldCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNJbmxp
bmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IGxhc3RWYWxpZE9mZnNldCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICht
X3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBzaXplID0g
bV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgICAgIHJldHVybiBzaXplIC0gMTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICAgICAgfQorICAg
ICAgICBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ID49IGZpcnN0VmFsaWRPZmZzZXQoKQor
ICAgICAgICAgICAgICAgICYmIG9mZnNldCA8PSBsYXN0VmFsaWRPZmZzZXQoKTsKKyAgICAgICAg
fQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0
cmluZyYgbmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdl
dChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0Nl
bGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KICAg
ICAgICAgYm9vbCBoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1By
b3RvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGll
c0V4Y2x1ZGluZ1Byb3RvOyB9CkBAIC0xNzcsNyArMjczLDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIGJvb2wgaGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVy
biBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzOyB9CiAgICAgICAgIAotICAgICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFi
bGUtPmlzRW1wdHkoKSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CisgICAgICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpOworICAg
ICAgICAgICAgcmV0dXJuICFKU0M6OmlzVmFsaWRPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9
CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVu
Y3Rpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxl
U3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3Vu
dCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQpAQCAtMjczLDggKzM3NCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIERpY3Rpb25hcnlLaW5kKTsKIAotICAgICAgICBzaXplX3QgcHV0U3BlY2lmaWNWYWx1
ZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmUoUHJvcGVydHlOYW1lKTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgcHV0U3BlY2lmaWNWYWx1ZShKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwogCiAgICAgICAg
IHZvaWQgY3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAgICAg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0zMDEsNyArNDAyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGludCB0cmFuc2l0aW9uQ291bnQoKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICAvLyBTaW5jZSB0aGUgbnVtYmVyIG9mIHRyYW5zaXRpb25zIGlzIGFsd2F5cyB0aGUg
c2FtZSBhcyBtX29mZnNldCwgd2Uga2VlcCB0aGUgc2l6ZSBvZiBTdHJ1Y3R1cmUgZG93biBieSBu
b3Qgc3RvcmluZyBib3RoLgotICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG5vT2Zmc2V0
ID8gMCA6IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9y
TGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgYm9vbCBpc1ZhbGlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90
b3R5cGVDaGFpbikgY29uc3Q7CkBAIC0zMTAsOCArNDExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFRyYW5zaXRpb25MZW5ndGggPSA2NDsKIAot
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG5vT2Zmc2V0ID0gLTE7Ci0KICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7CiAKICAg
ICAgICAgVHlwZUluZm8gbV90eXBlSW5mbzsKQEAgLTMzNiwxMCArNDM1LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgbXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0IG1f
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CiAKLSAgICAgICAgdWludDMyX3QgbV9wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgdWludDMyX3QgbV9vdXRPZkxpbmVDYXBhY2l0eTsKIAog
ICAgICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBhY2NvdW50IGZvciBhbm9ueW1vdXMgc2xvdHMK
LSAgICAgICAgaW50IG1fb2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsK
IAogICAgICAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKICAgICAgICAgYm9vbCBt
X2lzUGlubmVkUHJvcGVydHlUYWJsZSA6IDE7CkBAIC0zNTMsMjYgKzQ1MiwyNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAgICAg
fTsKIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9m
ZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNz
SW5mbygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNl
c3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAg
ICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7
CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZp
bmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50
cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zm
c2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVy
ZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAg
ICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9w
ZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlU
YWJsZSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBp
bnZhbGlkT2Zmc2V0OwogCiAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9w
ZXJ0eVRhYmxlLT5maW5kV2l0aFN0cmluZyhuYW1lLmltcGwoKSkuZmlyc3Q7Ci0gICAgICAgIHJl
dHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVu
dHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiAgICAgfQogICAgIAogICAgIGlu
bGluZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150732</attachid>
            <date>2012-07-04 01:02:42 -0700</date>
            <delta_ts>2012-07-04 01:14:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_15.diff</filename>
            <type>text/plain</type>
            <size>259631</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzOSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNz
ZW1ibGVyLmg6CisgICAgICAgIChBUk12N0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpsZHJXaWRlOEJpdEltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkFSTXY3QXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6
cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToK
KyAgICAgICAgKENvbnZlcnRpYmxlTG9hZExhYmVsKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWw6OkNvbnZlcnRpYmxlTG9hZExhYmVs
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2Fk
TGFiZWw6OmlzU2V0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFi
ZWxJZ25vcmluZ1dhdGNocG9pbnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxl
ci9Db2RlTG9jYXRpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChDb2RlTG9jYXRpb25D
b21tb24pOgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkOjpDb2RlTG9jYXRpb25Db252ZXJ0aWJs
ZUxvYWQpOgorICAgICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9h
ZEF0T2Zmc2V0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKExpbmtCdWZmZXIpOgorICAgICAg
ICAoSlNDOjpMaW5rQnVmZmVyOjpsb2NhdGlvbk9mKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Ojpjb252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJs
ZXJYODYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydGlibGVMb2FkUHRyKToKKyAg
ICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2XzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oOgorICAgICAgICAoUmVwYXRjaEJ1ZmZlcik6CisgICAgICAgIChKU0M6OlJlcGF0
Y2hCdWZmZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6
OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1
ZmZlcjo6c2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUpOgorICAgICAgICAqIGFzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aExv
YWQpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEdldEJ5SWRPcCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVz
KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKEdldEJ5
SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OlB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpvZmZzZXQpOgor
ICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAg
ICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUmVzb2x2
ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0Lmg6CisgICAg
ICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEJ5dGVD
b2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNv
bXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21w
aWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OlByb3BlcnR5QWNjZXNzUmVjb3JkOjpQcm9wZXJ0
eUFjY2Vzc1JlY29yZCk6CisgICAgICAgIChQcm9wZXJ0eUFjY2Vzc1JlY29yZCk6CisgICAgICAg
ICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1JlcGF0Y2hCeUlk
U2VsZkFjY2Vzcyk6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNz
U3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWls
ZEdldEJ5SURQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRSZXBsYWNlU3R1
Yik6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKToKKyAgICAgICAg
KEpTQzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUJ1aWxk
UHV0QnlJZExpc3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAv
TWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRv
U3R1YkluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlT
dHViQ29tcGlsYXRpb25JbmZvOjpQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8pOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXRCeUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpJVCk6CisgICAgICAg
ICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbCk6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2Jh
bCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X21ldGhvZF9jaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRC
eUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21ldGhvZF9jaGVjayk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVB1dERpcmVj
dE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0
Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZM
aXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZ1bmN0aW9uTmFtZU9mZnNldCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGly
ZWN0TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5saW5lU3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlVW5zYWZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9m
ZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRGb3JMb2NhdGlvbik6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFkZHJlc3NPZk91
dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpKU09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZh
c3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRl
U3RvcmFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6aW5kZXhSZWxhdGl2ZVRvQmFzZSk6CisgICAgICAgIChK
U0M6Om9mZnNldFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmdldE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1h
cEhhc2hUYWJsZS5oOgorICAgICAgICAoUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TWFwRW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoUHJvcGVydHlU
YWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlUYWJsZTo6c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5T2Zm
c2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Y2hlY2tPZmZzZXQp
OgorICAgICAgICAoSlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzVmFsaWRP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6CisgICAgICAgIChKU0M6Omlz
T3V0T2ZMaW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
b2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAgICAg
ICAoSlNDOjpmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVNsb3Q6OmNsZWFyT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5o
OgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6UHV0UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJvcGVy
dHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VDYXBh
Y2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQ
aW5uaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Om91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJ
bmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnRvdGFsU3RvcmFnZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRv
dGFsU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmaXJzdFZhbGlk
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpsYXN0VmFsaWRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25Db3Vu
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAxMi0wNy0wMyAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmg6IEhhc2ggQ29uc3Qg
SlNTdHJpbmcgaW4gQmFja2luZyBTdG9yZXMgdG8gU2F2ZSBNZW1vcnkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpA
QCAtNTgyLDYgKzU4Miw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0Lmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkx
QTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rp
c2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRjQyNzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZF
MTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZG
NDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRD
QjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3Bl
cnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQx
MDA0MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAq
LzsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkw
MDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBS
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9w
ZXJ0eU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9m
ZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0
MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdDRkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdDRkFQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0
aCA9IGRmZy9ERkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEw
Nyw2ICsyMTA5LDcgQEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlO
YW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFy
cmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1l
QXJyYXkuaCAqLywKKwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZz
ZXQuaCAqLywKIAkJCQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNw
cCAqLywKIAkJCQk2NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8s
CiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEs
NiArMjgxNCw3IEBACiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJl
c29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUw
MDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0x
MihPUF9MRFJfaW1tX1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0
LCBSZWdpc3RlcklEIHJuLCB1aW50OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9w
MTJSZWc0UmVnNEltbTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIz
LDQ2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9u
U3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4
RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFd
ICYgMHhGMDAwKSk7CisgICAgICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAg
cHRyWzBdIHw9IE9QX0xEUl9pbW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAm
IDB4MEYwMCkgPDwgNDsKKyAgICAgICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3Qp
ICogMik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0
YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1
aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3Rh
cnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9Q
X0xEUl9pbW1fVDM6CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAg
ICAgICAgICAgIHB0clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQURE
X2ltbV9UMzsKKyAgICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0Owor
ICAgICAgICAgICAgcHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE9QX0FERF9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAg
IGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5z
aWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjk1LDYgKzI5NSwzNiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAg
QXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxl
TG9hZExhYmVsOgorICAgIC8vCisgICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRz
IGEgbG9hZFB0ciBpbnN0cnVjdGlvbiB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgor
ICAgIC8vIHNvIHRoYXQ6CisgICAgLy8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIp
CisgICAgLy8KKyAgICAvLyBiZWNvbWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJ
bW1QdHIoaSksIGEsIGIpCisgICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBj
bGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1
ZmZlcjsKKyAgICAgICAgCisgICAgcHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJl
bCgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVM
b2FkTGFiZWwoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAg
ICAgICAgICAgIDogbV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hw
b2ludHMoKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVs
UHRyOgogICAgIC8vCkBAIC01NjIsNiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0
Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpCisgICAgeworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5k
aWYKICAgICAKICAgICBMYWJlbCBsYWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3Rl
ZDoKICAgICB7CiAgICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRh
TGFiZWxQdHIuZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsK
KyAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlv
bigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29t
cHV0YXRpb24oQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0
YUxvY2F0aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5l
YXJDYWxsOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVM
b2NhdGlvbkRhdGFMYWJlbDMyOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xh
c3MgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0
eXBlcyBhcmUgYWxsIHByZXR0eSBtdWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBD
b2RlUHRyIChvciBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFt
ZSkuICBUaGVzZQpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIGRhdGFMYWJlbFB0ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2Nh
dGlvbkRhdGFMYWJlbDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9m
ZnNldCk7CisgICAgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0
T2Zmc2V0KGludCBvZmZzZXQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9u
KCkKQEAgLTE0Niw2ICsxNDgsMTUgQEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNv
bW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7Citw
dWJsaWM6CisgICAgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGlj
aXQgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2Nh
dGlvbikKKyAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4
cGxpY2l0IENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkg
eyB9Cit9OworCiBpbmxpbmUgQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29t
bW9uOjppbnN0cnVjdGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElE
X0NPREVfT0ZGU0VUKG9mZnNldCk7CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9j
YXRpb25EYXRhTGFiZWxDb21wYWN0IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxh
YmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZz
ZXQpOwogfQogCitpbmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlv
bkNvbW1vbjo6Y29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NF
UlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9m
ZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VN
QkxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5r
QnVmZmVyOjpDb2RlUmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygi
ICAgIENvZGUgYXQgWyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCksIHN0YXRpY19jYXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
ICsgcmVzdWx0LnNpemUoKSk7CiAgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2Rl
KCksIG1fc2l6ZSwgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIg
ICAgICAgIDxubyBkaXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAg
ICAgICAgPG5vIGRpc2Fzc2VtYmx5IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3Mg
TGlua0J1ZmZlciB7CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFj
dCBEYXRhTGFiZWxDb21wYWN0OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bDMyIERhdGFMYWJlbDMyOwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0
ciBEYXRhTGFiZWxQdHI7CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVM
b2FkTGFiZWwgQ29udmVydGlibGVMb2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNU
SU9OKQogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsK
ICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpA
QCAtMTgwLDYgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25E
YXRhTGFiZWxDb21wYWN0KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwg
YXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQgbG9jYXRpb25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3Nl
bWJsZXI6OmdldExpbmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVs
KSkpOworICAgIH0KKwogICAgIC8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRy
ZXNzIG9mIHRoZSBjYWxsLCBnaXZlbiBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFy
dCBvZiB0aGUgY29kZS4KICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2Fs
bCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAt
NjAwLDYgKzYwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRy
ZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7
CiAgICAgfQorICAgIAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0
cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZl
cnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zm
c2V0ID49MCAmJiBhZGRyZXNzLm9mZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJXaWRlOEJpdEltbWVkaWF0ZShkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2
aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAg
Q29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVz
dWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFk
ZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
c2RfbXIoYWRkcmVzcy5tX3B0ciwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAx
MjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRl
c3QpOwogICAgIH0KIAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0
cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZl
cnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRl
c3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIyLDYgKzEyMiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2Fs
bGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxl
ZUZ1bmN0aW9uKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBsYWNlV2l0aExvYWQobGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxh
Y2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJl
bCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21w
dXRhdGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9u
SXNBY3RpdmUoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZl
KQorICAgIHsKKyAgICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhM
b2FkKGxhYmVsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24obGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50
OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsK
KyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisg
ICAgICAgICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAg
ICAgY2FzZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9Q
X0xFQToKKyAgICAgICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4
X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOwor
I2lmIENQVShYODZfNjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAg
ICAgICAgICAgIHB0cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAg
ICBjYXNlIE9QX01PVl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQo
QXNzZW1ibGVyTGFiZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAg
ICAgICBvcCA9ICJnZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3Ag
PSAiZ2V0X2J5X2lkX3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2Vs
ZjoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkX2NoYWluOgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfcmVwbGFjZTogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwx
MCArMTA3OSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAg
IHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXTsKICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
VW5saW5raW5nKQpAQCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYg
KEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAg
ICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0
cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVk
OwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAg
ICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdu
b3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNp
bXBsZSwgZmFsc2UsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFs
dWUpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFp
bihHZXRCCiAgICAgICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUt
PmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJp
YnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09
IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3Ry
dWN0dXJlKTsKQEAgLTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
CiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmli
dXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3Vs
dC5tX29mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1
bHQubV9vZmZzZXQpKSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShz
cGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5t
X29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1f
b2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKLSAgICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAor
ICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAg
ICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmli
dXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobXlPZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNl
dChteU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3Vu
ZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTYs
NyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQp
CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTIyMywxMSArMjIzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpOworICAgICAgICBBU1NFUlQoIWlzVmFsaWRP
ZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAg
ICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgaWYgKCFpc1ZhbGlkT2Zm
c2V0KHJlc3VsdC5tX29mZnNldCkpIHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Ns
b3dQYXRoOwogICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKICAgICAgICAg
cmVzdWx0Lm1fY2hhaW4uY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBHZXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgR2V0QnlJZFN0
YXR1c19oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZVNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCkBAIC00NiwxMyArNDcsMTMgQEAg
cHVibGljOgogCiAgICAgR2V0QnlJZFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0luZm9y
bWF0aW9uKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKICAgICBHZXRCeUlkU3RhdHVzKAog
ICAgICAgICBTdGF0ZSBzdGF0ZSwgYm9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNl
dCYgc3RydWN0dXJlU2V0ID0gU3RydWN0dXJlU2V0KCksCi0gICAgICAgIHNpemVfdCBvZmZzZXQg
PSBub3RGb3VuZCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3Ry
dWN0dXJlKj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKKyAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IGludmFsaWRPZmZzZXQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwg
VmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCiAgICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQp
CiAgICAgICAgICwgbV9jaGFpbihjaGFpbikKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1
Y3R1cmVTZXQ7IH0KICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFpbjsgfSAvLyBSZXR1cm5zIGVtcHR5IHZlY3RvciBpZiB0aGlzIGlzIGEg
ZGlyZWN0IGFjY2Vzcy4KICAgICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3NwZWNpZmljVmFsdWU7IH0gLy8gUmV0dXJucyBKU1ZhbHVlKCkgaWYgdGhlcmUgaXMgbm8g
c3BlY2lmaWMgdmFsdWUuCi0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KICAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fz
U2VlbkluSklUOyB9CiAgICAgCkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0
dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBtX2NoYWluOwog
ICAgIEpTVmFsdWUgbV9zcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3Jv
KG9wX3Jlc29sdmVfd2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAg
ICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX3RoaXMsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWQsIDkpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIC8q
IGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfc2Vs
ZiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9i
eV9pZF9wcm90bywgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3Jv
KG9wX2dldF9ieV9pZF9jaGFpbiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkBAIC0x
MjIsOSArMTIzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc3Ry
aW5nX2xlbmd0aCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3Jv
KG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNy
byhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKKyAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTEgQEAgUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIGlmICghc3RydWN0dXJlKQogICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CiAgICAgCi0gICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1
dF9ieV9pZCkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5v
dEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgbm90Rm91bmQpOworICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9wdXRfYnlfaWQKKyAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0g
bGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0
KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2Us
IHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKICAgICB9CkBAIC01NiwxNiArNTcsMTggQEAgUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAog
ICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QKLSAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZQorICAgICAgICAgICB8fCBp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmUpOwogICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
aW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNo
YWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKICAgICBBU1NFUlQo
bmV3U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRh
KCksIGlkZW50KTsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7
CiAgICAgCiAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOwogI2Vsc2UKQEAgLTk0LDI0ICs5Nywy
NCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50
KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKLSAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0
cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHViSW5mby51
LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAh
PSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBs
YWNlLAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVj
dFN0cnVjdHVyZS5nZXQoKSwKICAgICAgICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAgICAg
IG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKICAgICAgICAgQVNTRVJUKHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1
Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNW
YWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygK
ICAgICAgICAgICAgICAgICBTaW1wbGVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCkBAIC0xMTks
MTQgKzEyMiwxNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSwK
ICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7
CiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAg
IH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBQdXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgUHV0QnlJZFN0YXR1c19oCiAKKyNpbmNs
dWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fb2xkU3Ry
dWN0dXJlKDApCiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVj
dHVyZUNoYWluKDApCi0gICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9v
ZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjQsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNo
YWluLAotICAgICAgICBzaXplX3Qgb2Zmc2V0KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZShv
bGRTdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQpAQCAt
NzQsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9y
bWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gIW1fb2xkU3RydWN0dXJlKTsK
ICAgICAgICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX25ld1N0
cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9
PSAhbV9zdHJ1Y3R1cmVDaGFpbik7Ci0gICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9y
bWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IG5vdEZv
dW5kKSk7CisgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3Rh
dGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpKTsKICAg
ICB9CiAgICAgCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05MCw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2xkU3RydWN0dXJlOyB9CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX25ld1N0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlQ2hhaW47IH0KLSAgICBzaXplX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
UHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAg
U3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJl
OwogICAgIFN0cnVjdHVyZUNoYWluKiBtX3N0cnVjdHVyZUNoYWluOwotICAgIHNpemVfdCBtX29m
ZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxNyArMzIsMTkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBFTkFCTEUoTExJ
TlQpIHx8IEVOQUJMRShKSVQpCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9y
U3RydWN0dXJlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsK
ICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KAorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAqY29kZUJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIsIGF0dHJpYnV0ZXNJZ25v
cmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0
YXR1cygpOwogICAgIAogICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKFJlc29sdmVHbG9i
YWxTdGF0dXM6OlNpbXBsZSwgc3RydWN0dXJlLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogfQor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkgfHwgRU5BQkxFKEpJVCkKIAogc3RhdGljIFJlc29sdmVH
bG9iYWxTdGF0dXMgY29tcHV0ZUZvckxMSW50KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5o
CShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFJlc29sdmVHbG9iYWxTdGF0dXNfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIFJl
c29sdmVHbG9iYWxTdGF0dXMoCi0gICAgICAgIFN0YXRlIHN0YXRlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IDAsIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwKKyAgICAgICAgU3RhdGUgc3RhdGUs
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldCwKICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpKQogICAg
ICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQpA
QCAtNzAsMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7IH0KICAgICAKICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9Ci0gICAgc2l6ZV90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBKU1ZhbHVlIHNwZWNpZmlj
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljVmFsdWU7IH0KIAogcHJpdmF0ZToKICAg
ICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7Ci0gICAgc2l6ZV90
IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIEpTVmFsdWUgbV9z
cGVjaWZpY1ZhbHVlOwogfTsgLy8gY2xhc3MgUmVzb2x2ZUdsb2JhbFN0YXR1cwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywxNSArMTEzLDYgQEAgcHVibGljOgogICAgIAogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzLnNpemUoKTsgfQogICAg
IAotICAgIGJvb2wgYWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3JhZ2UoKSBjb25zdAotICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzW2ldLT5pc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgLy8gQ2FsbCB0aGlzIGlmIHlvdSBrbm93
IHRoYXQgdGhlIHN0cnVjdHVyZSBzZXQgbXVzdCBjb25zaXN0IG9mIGV4YWN0bHkKICAgICAvLyBv
bmUgc3RydWN0dXJlLgogICAgIFN0cnVjdHVyZSogc2luZ2xldG9uU3RydWN0dXJlKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKICAg
ICAgICAgICAgICAgICBpbnQ4X3Qgc2NyYXRjaEdQUjsKICAgICAgICAgICAgICAgICBpbnQzMl90
IGRlbHRhQ2FsbFRvRG9uZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQ7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNr
OwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TbG93Q2FzZTsKICAgICAgICAg
ICAgICAgICBpbnQzMl90IGRlbHRhQ2hlY2tJbW1Ub0NhbGw7CkBAIC0yMTksNiArMjIwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDE2X3Qgc3RydWN0dXJlQ2hlY2s7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpAQCAt
MjMwLDYgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICB9IGdl
dDsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGludDE2X3Qgc3RydWN0dXJlVG9Db21wYXJlOworICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGJvb2wgdXNlc1Jlc3VsdCwgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAg
ICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUsIE5vZGVJbmRleCBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgICAgICBib29sIHVzZUlubGluZVN0b3Jh
Z2UsIHNpemVfdCBvZmZzZXQpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpOwogICAg
IHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3Bl
Y3VsYXRlZFR5cGUsIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAog
ICAgICAgICBjb25zdCBHZXRCeUlkU3RhdHVzJik7CkBAIC0xNjMwLDI1ICsxNjMwLDIwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXIKIAogdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBzaXplX3Qgb2Zmc2V0KQorICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdl
OwotICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7Ci0gICAgaWYgKHVzZUlubGluZVN0b3JhZ2UpIHsK
KyAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcHJvcGVydHlTdG9yYWdl
ID0gYmFzZTsKLSAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpKTsKLSAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAv
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlCiAgICAgICAg
IHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsK
LSAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKLSAgICB9CiAgICAgc2V0KGRlc3RpbmF0aW9uT3Bl
cmFuZCwKICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgIEdldEJ5T2Zmc2V0LCBPcElu
Zm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIE9wSW5mbyhwcmVkaWN0aW9u
KSwKICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSkpOwogICAgICAgICAKICAgICBTdG9yYWdl
QWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZz
ZXQgPSBvZmZzZXQgKyBvZmZzZXRPZmZzZXQ7CisgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0
ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShvZmZzZXQpOwogICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlk
ZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgIG1fZ3JhcGgubV9zdG9yYWdl
QWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogfQpAQCAtMTY3Nyw3ICsxNjcy
LDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAg
ICAKICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSkpLCBiYXNlKTsKICAgICAKLSAg
ICBib29sIHVzZUlubGluZVN0b3JhZ2U7CiAgICAgaWYgKCFnZXRCeUlkU3RhdHVzLmNoYWluKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5
SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkuc2luZ2xldG9uU3RydWN0dXJlKCk7CiAgICAgICAgIEpT
T2JqZWN0KiBjdXJyZW50T2JqZWN0ID0gMDsKQEAgLTE2ODYsOSArMTY4MCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICBjdXJyZW50U3RydWN0dXJl
ID0gZ2V0QnlJZFN0YXR1cy5jaGFpbigpW2ldOwogICAgICAgICAgICAgYmFzZSA9IGFkZFN0cnVj
dHVyZVRyYW5zaXRpb25DaGVjayhjdXJyZW50T2JqZWN0LCBjdXJyZW50U3RydWN0dXJlKTsKICAg
ICAgICAgfQotICAgICAgICB1c2VJbmxpbmVTdG9yYWdlID0gY3VycmVudFN0cnVjdHVyZS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdXNlSW5saW5lU3RvcmFn
ZSA9IGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkuYWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0
eVN0b3JhZ2UoKTsKKyAgICB9CiAgICAgCiAgICAgLy8gVW5sZXNzIHdlIHdhbnQgYnVncyBsaWtl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc4Mywgd2UgbmVlZCB0
bwogICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBiYXNlIG9mIHRoZSBvcmlnaW5hbCBnZXRfYnlfaWQg
aXMga2VwdCBhbGl2ZSB1bnRpbCB3ZSdyZSBkb25lIHdpdGgKQEAgLTE3MDcsOCArMTY5OSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgfQogICAgIAogICAgIGhh
bmRsZUdldEJ5T2Zmc2V0KAotICAgICAgICBkZXN0aW5hdGlvbk9wZXJhbmQsIHByZWRpY3Rpb24s
IGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHVzZUlubGluZVN0b3JhZ2UsCi0gICAgICAgIGdldEJ5
SWRTdGF0dXMub2Zmc2V0KCkpOworICAgICAgICBkZXN0aW5hdGlvbk9wZXJhbmQsIHByZWRpY3Rp
b24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogfQog
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKQEAgLTIxNzIsNyAr
MjE2Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZCk7Cisg
ICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGdldEluc3RydWN0aW9u
LT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkCisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGdldEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5
X2lkX291dF9vZl9saW5lKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoZ2V0SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtnZXRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOwpAQCAtMjIyNSw3ICsyMjE3LDggQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRTY29wZWRWYXIsIE9wSW5mbyhzbG90KSwgZ2V0U2NvcGVDaGFpbiwgZ2V0KHNvdXJjZSkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3Njb3BlZF92YXIpOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgor
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZTogewogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKQEAgLTIyNDEsOCArMjIzNCwxMSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYnlfaWQpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZToKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmU6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpAQCAtMjI1OSwyNSArMjI1NSwyMCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmICghaGFzRXhpdFNpdGUgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVJlcGxhY2Uo
KSkgewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyht
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpKSksIGJh
c2UpOwotICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJ
ZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAv
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFk
ZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQdXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5z
aXplKCkpLCBwcm9wZXJ0eVN0b3JhZ2UsIGJhc2UsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAg
ICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9m
ZnNldCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRh
Lm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAg
ICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50
aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRh
LmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNF
eGl0U2l0ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxl
VHJhbnNpdGlvbigpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMub2xk
U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gcHV0QnlJZFN0YXR1cy5u
ZXdTdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAg
ICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0
eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkK
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlQ2hhaW5Jc1N0aWxsVmFsaWQoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLApAQCAtMjMwOCwxNiArMjI5OSwxMSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCkpKSksCiAgICAg
ICAgICAgICAgICAgICAgIGJhc2UpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5
U3RvcmFnZTsKLSAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUo
KS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldChwdXRCeUlkU3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCEoc2l6ZW9m
KEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAgICAgICAgICAgICAgICAg
ICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlT
dG9yYWdlLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKLSAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAg
ICAgICAgICAgUHV0QnlPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwKQEAgLTIzMjYsNyArMjMxMiw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAg
dmFsdWUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NE
YXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRh
Lm9mZnNldCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgICAg
ICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShw
dXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0
YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CkBAIC0yNzM4LDggKzI3MjQsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0aW9uLCBnbG9iYWxPYmpl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXMuc3Ry
dWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXMub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51
bWJlciwgc3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlTnVtYmVyKys7IC8vIFNraXAgb3Zl
ciB0aGUgdW51c2VkIGdsb2JhbCByZXNvbHZlIGluZm8uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSw5ICsxMTksMTMgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2Rl
KAogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3Zh
cjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRf
b2ZfbGluZToKICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
OgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgogICAgIGNhc2Ugb3BfcHV0
X2dsb2JhbF92YXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsNyBAQCB2
b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAjZW5kaWYKICAgICAgICAg
aW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93Q2FzZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5
QWNjZXNzZXNbaV0ubV9zbG93UGF0aEdlbmVyYXRvci0+bGFiZWwoKSkpOwogICAgICAgICBpbmZv
LnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2Fs
bFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2Vz
W2ldLm1fZG9uZSkpOworICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Byb3BlcnR5U3RvcmFnZUxv
YWQpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuYmFzZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nl
c1tpXS5tX2Jhc2VHUFI7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaW5mby5wYXRjaC5k
ZmcudmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7
CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVy
dGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJh
dG9yKiBzbG93UGF0aEdlbmVyYXRvciwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRv
bmUsCkBAIC0xNDgsNiArMTQ5LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJs
ZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkT3JTdG9yZSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbENvbXBhY3QgcGF5bG9hZExvYWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdl
bmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCkBAIC0xNjEsNiArMTYzLDcgQEAgc3RydWN0IFBy
b3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikK
ICAgICAgICAgLCBtX3N0cnVjdHVyZUltbShzdHJ1Y3R1cmVJbW0pCiAgICAgICAgICwgbV9zdHJ1
Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVjaykKKyAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUxv
YWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAsIG1f
bG9hZE9yU3RvcmUobG9hZE9yU3RvcmUpCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTgy
LDYgKzE4NSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgQ29kZU9yaWdp
biBtX2NvZGVPcmlnaW47CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVj
dHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNo
ZWNrOworICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3BlcnR5
U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBtX2xvYWRPclN0b3JlOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQ2FsbChDb2Rl
QmxvY2sqIGNvCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rp
b24pOwogfQogCi1zdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9u
LCBib29sIGNvbXBhY3QpCitzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3QgRnVuY3Rpb25QdHIgJnNs
b3dQYXRoRnVuY3Rpb24sIGJvb2wgY29tcGFjdCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0
Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTIsMTggKzUyLDE5IEBAIHN0YXRpYyB2b2lkIGRm
Z1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2QKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUg
Y2hlY2sgJiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRw
dHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0ltbVRvQ2FsbCksIHN0cnVjdHVyZSk7
CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChjb21wYWN0KQotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZv
LnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNo
ZWRTdG9yYWdlKG9mZnNldCkpOwogICAgIGVsc2UKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICog
b2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkp
OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoY29tcGFjdCkgewotICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJl
bENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNpemVv
ZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9Q
YXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8u
cGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9IGVsc2UgewotICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXpl
b2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zm
c2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9UYWdMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxv
YWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7
CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xMDUsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgbGlua1Jl
c3RvcmVTY3JhdGNoKExpbmtCdWZmZQogICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZl
ciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZn
LmRlbHRhQ2FsbFRvRG9uZSksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBzaXplX3Qgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFi
ZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYmIHN0dWJSb3V0aW5lKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0No
YWluQWNjZXNzU3R1YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJl
bCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
JiBzdHViUm91dGluZSkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOwogCkBAIC0xMzksMTMgKzE0MCwyMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBpdC0+Z2V0KCk7
CiAgICAgfQogICAgIAotICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+YWRkcmVzc09m
UHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdEdQUik7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9m
ZnNldCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2Jq
ZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLCByZXN1bHRHUFIpOwogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFn
R1BSKTsKLSAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIG9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7
CisgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihwcm90
b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSksIHJlc3VsdEdQUik7CisgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFn
R1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0R1BSKTsKICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIHN0dWJK
aXQubG9hZFB0cihwcm90b09iamVjdC0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1
bHRHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHRHUFIpOworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgc3R1
YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSks
IHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
dWNjZXNzLCBmYWlsOwogICAgIApAQCAtMjUzLDcgKzI2NCw3IEBAIHN0YXRpYyBib29sIHRyeUNh
Y2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUo
KSAhPSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICBzaXplX3QgY291bnQgPSBub3Jt
YWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlVmFsdWUsIHNsb3Quc2xvdEJhc2UoKSwgcHJv
cGVydHlOYW1lLCBvZmZzZXQpOwogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTM0OSwxMiArMzYwLDIwIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3Qo
RXhlY1N0YXQKICAgICAgICAgICAgIHx8IHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJv
cGVydHlTbG90OjpDdXN0b20pIHsKICAgICAgICAgICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5
VHlwZSgpID09IFByb3BlcnR5U2xvdDo6R2V0dGVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSksIHNjcmF0Y2hHUFIp
OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVs
YXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2Ny
YXRjaEdQUik7CiAjZW5kaWYKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAg
ICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZz
ZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2Vu
ZGlmCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAg
IG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uQ2FsbEdldHRlcjsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0zODUsMTMgKzQwNCwyNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURM
aXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICBoYW5kbGVyQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOwog
ICAgICAgICAgICAgc3R1YkppdC5qdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zm
c2V0KCkpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkg
KiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHRHUFIpOwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
Ci0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BS
KTsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBy
ZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBpZiAoYmFzZUdQUiA9PSByZXN1bHRU
YWdHUFIpIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVz
dWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdEdQUik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRS
ZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHJlc3VsdEdQUik7CisjZWxzZQor
ICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRU
YWdHUFIpOworICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSwgcmVzdWx0R1BSKTsKICNlbmRpZgorICAgICAgICAgICAgfQogICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN0dWJKaXQuanVtcCgpOwogICAgICAgICAgICAgaXNEaXJlY3QgPSB0cnVlOwogICAg
ICAgICB9CkBAIC00NTAsNyArNDgzLDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlEUHJv
dG9MaXN0KEV4ZQogICAgIAogICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7
CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICBzaXplX3QgY291
bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlVmFsdWUsIHNsb3Quc2xvdEJh
c2UoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTU2Nyw3ICs2MDAsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFj
ZVN0dWIoCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKICAgICAKLSAgICBpZiAo
c2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgIXN0
cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkpIHsKKyAgICBpZiAoc2NyYXRjaEdQUiA9
PSBJbnZhbGlkR1BSUmVnICYmICh3cml0ZUJhcnJpZXJOZWVkZWQgfHwgaXNPdXRPZkxpbmVPZmZz
ZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CiAgICAgICAgIHNjcmF0Y2hHUFIgPSBTcGVjdWxh
dGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7CiAgICAgICAgIG5l
ZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAgICAgc3R1YkppdC5wdXNoKHNjcmF0Y2hH
UFIpOwpAQCAtNTg2LDIwICs2MTksMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHVi
KAogI2VuZGlmCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3RydWN0dXJlLT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uo
c2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAg
c3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGlmIChzdHJ1
Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZh
bHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC02ODUsMjAgKzcxOCwy
MCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAKICAgICBzdHViSml0LnN0
b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJv
cGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2
YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5l
U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIH0K
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGlu
ZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQo
KSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9m
ZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkg
KyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsK
ICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIApAQCAtNzUyLDcgKzc4NSw3IEBAIHN0YXRpYyBi
b29sIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIHNraXAgb3B0aW1pemluZyB0aGUg
Y2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYwotICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKQEAgLTgxNSw3ICs4NDgsNyBAQCBzdGF0aWMgYm9v
bCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNh
c2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQorICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hl
Y2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCi0gICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICBKSVRDb21waWxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IG1faml0LmNvbnZlcnRp
YmxlTG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZFdpdGhQYXRjaCA9IG1faml0LmxvYWQz
MldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dFBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBh
Y3QgcGF5bG9hZExvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NP
ZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0
UGF5bG9hZEdQUik7CiAgICAgCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2Vz
cygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2lu
LCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAgY29kZU9y
aWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdl
TG9hZCwKICAgICAgICAgICAgIHRhZ0xvYWRXaXRoUGF0Y2gsIHBheWxvYWRMb2FkV2l0aFBhdGNo
LCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90
PihiYXNlUGF5bG9hZEdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0VGFnR1BSKSwKICAgICAg
ICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0UGF5bG9hZEdQUiksIHNhZmVDYXN0PGludDhf
dD4oc2NyYXRjaEdQUiksCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVyKGJhc2VQYXlsb2FkR1BSLCB2
YWx1ZVRhZ0dQUiwgdmFsdWVVc2UsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3Jh
dGNoR1BSKTsKIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBh
eWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQ
Uik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiB0YWdTdG9yZVdpdGhQYXRjaCA9
IG1faml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlVGFnR1BSLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgcGF5
bG9hZFN0b3JlV2l0aFBhdGNoID0gbV9qaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2go
dmFsdWVQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
CiAgICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFj
Y2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwg
c3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QodGFnU3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChwYXlsb2FkU3RvcmVXaXRo
UGF0Y2gubGFiZWwoKSksCiAgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBz
YWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwKQEAgLTM1NTAsNyArMzU1MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAg
ICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMzg5MSw4ICszODkxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJl
c05vdE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0
UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAKICAgICAgICAgLy8gRmFzdCBjYXNlCi0gICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOworICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXNvbHZlSW5mb0dQUiwg
T0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVzb2x2ZUluZm9H
UFIpOworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5P
ckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0
eSkpOworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxp
bmsoJm1faml0KTsKKyNlbmRpZgogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJh
c2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRp
bWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSksIHJlc3VsdFRhZ0dQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
QmFzZUluZGV4KHJlc3VsdFBheWxvYWRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6
VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw3ICs0OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hl
Y2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpKSwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwg
cHJvcGVydHlTdG9yYWdlTG9hZCA9CisgICAgICAgIG1faml0LmNvbnZlcnRpYmxlTG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0
IGxvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0
Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCAwKSwgcmVzdWx0R1BSKTsKICAgICAK
ICAgICBKSVRDb21waWxlcjo6TGFiZWwgZG9uZUxhYmVsID0gbV9qaXQubGFiZWwoKTsKQEAgLTUx
Nyw4ICs1MTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAg
ICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vz
c1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIGxvYWRXaXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLAotICAgICAgICAgICAg
ZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJl
c3VsdEdQUiksCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0
cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBsb2FkV2l0aFBhdGNoLAorICAgICAg
ICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BS
KSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50
OF90PihzY3JhdGNoR1BSKSwKICAgICAgICAgICAgIHNwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCA/
IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNJblVzZSA6IFByb3BlcnR5QWNjZXNzUmVj
b3JkOjpSZWdpc3RlcnNGbHVzaGVkKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGgucmVsZWFzZSgpKTsKQEAgLTUzNiw3ICs1MzcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPCiAKICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIs
IHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAK
LSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgSklUQ29tcGls
ZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQorICAgICAgICBt
X2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CiAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbDMyIHN0b3JlV2l0aFBhdGNoID0gbV9qaXQuc3RvcmVQdHJXaXRo
QWRkcmVzc09mZnNldFBhdGNoKHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCAwKSk7CiAKICAgICBKSVRDb21waWxlcjo6TGFiZWwgZG9uZUxhYmVsID0gbV9qaXQubGFi
ZWwoKTsKQEAgLTU2Niw3ICs1NjgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0
QnlJZChDb2RlTwogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcHRpbWl6ZWRDYWxsLCBO
b1Jlc3VsdCwgdmFsdWVHUFIsIGJhc2VHUFIsCiAgICAgICAgICAgICBpZGVudGlmaWVyKGlkZW50
aWZpZXJOdW1iZXIpKTsKICAgICB9Ci0gICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQoY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwo
KSksIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiks
IHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIp
KSk7CisgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCisgICAgICAgIFByb3BlcnR5QWNjZXNz
UmVjb3JkKAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpEYXRhTGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQo
KSwgZG9uZUxhYmVsLAorICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2Fm
ZUNhc3Q8aW50OF90Pih2YWx1ZUdQUiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUikpKTsK
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQogCkBAIC0z
NTc0LDcgKzM1ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTAsOSArMzg5NiwxNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHN0cnVjdHVyZXNEb250TWF0Y2ggPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAgICAgIC8vIEZhc3QgY2Fz
ZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwog
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIs
IE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZv
R1BSKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3Vs
dEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciksIHJlc3VsdEdQUik7
CisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c091dE9mTGluZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1
YWwsIHJlc29sdmVJbmZvR1BSLCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7
CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgaXNPdXRPZkxpbmUubGluaygm
bV9qaXQpOworI2VuZGlmCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlNjYWxlUHRyLCAtaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BSKTsKICAgICAg
ICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAzLDggKzIxMDMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZkluaGVyaXRvcklEKCkpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9i
amVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlci4KLSAgICAgICAgbV9qaXQuYWRkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEpTT2JqZWN0KSksIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKICAgICB9CiAKICAgICAvLyBJdCBpcyBhY2Nl
cHRhYmxlIHRvIGhhdmUgc3RydWN0dXJlIGJlIGVxdWFsIHRvIHNjcmF0Y2gsIHNvIGxvbmcgYXMg
eW91J3JlIGZpbmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw3IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICAgICB9CiAKICAgICBpZiAoaXNKU0ZpbmFsT2Jq
ZWN0KGNlbGwpKSB7Ci0gICAgICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8
SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOworICAgICAgICBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MjIsNyArMTgyMiw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUcK
ICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgpKTsKIAogICAgICAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogCiAgICAgICAgIC8vIFNpbmNlIHdl
J3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0
IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCkBA
IC0xODUxLDcgKzE4NTEsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2Fj
aGVHCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5j
YWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxG
cmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
ICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9nZXRfYnlf
aWRfZ2VuZXJpYyk7CkBAIC0zMDQ1LDYgKzMwNDUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3Jlc29s
dmVfd2l0aF90aGlzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyAgICBE
RUZJTkVfT1BDT0RFKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSkKICAgICBERUZJTkVfT1BDT0RF
KG9wX2dldF9ieV9pZCkgewogICAgICAgICAvKiBnZXRfYnlfaWQgZHN0KHIpIGJhc2UocikgcHJv
cGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIG5vcChuKSBub3Aobikgbm9wKG4pCiAKQEAgLTM1Mjcs
NiArMzUyOCw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgc2tpcF9nZXRfc3RyaW5nX2xl
bmd0aDoKICAgICBnb3RvICooJiZza2lwX3B1dF9ieV9pZCk7CiAjZW5kaWYKKyAgICBERUZJTkVf
T1BDT0RFKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1
dF9ieV9pZCkgewogICAgICAgICAvKiBwdXRfYnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFs
dWUocikgbm9wKG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRpcmVjdChiKQogCkBAIC0zNTY1LDYg
KzM1NjcsOCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogI2VuZGlmCiAgICAgREVGSU5FX09QQ09E
RShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpCiAgICAgREVGSU5FX09QQ09ERShvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpCisgICAgREVGSU5FX09QQ09ERShvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09E
RShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikgewogICAgICAgICAvKiBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBvbGRTdHJ1Y3R1cmUoc0lEKSBu
ZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1cmVDaGFpbihjaGFpbikgb2Zmc2V0KG4pIGRpcmVjdChi
KQogICAgICAgICAgCkBAIC0zNjA1LDcgKzM2MDksNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgog
ICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3NhcnkoKmdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiAKICAgICAgICAgICAg
ICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgaW50IG9mZnNl
dCA9IHZQQ1s3XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3Qt
Pm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKCpnbG9iYWxE
YXRhLCBjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQp
OwogICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgb2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAK
QEAgLTM2MzksNyArMzY0Myw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VDZWxsKTsKICAgICAgICAgICAgICAgICBpbnQg
dmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHZQQ1s1XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHZQQ1s1
XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQVNTRVJUKGJh
c2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9u
KCpnbG9iYWxEYXRhLCBjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9
PSBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgb2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFs
dWUoKSk7CkBAIC0zNzE3LDcgKzM3MjEsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICBKU1ZhbHVlIGV4cGVjdGVkU3Vic2NyaXB0ID0gY2FsbEZyYW1lLT5yKGV4cGVjdGVkKS5qc1Zh
bHVlKCk7CiAgICAgICAgIGludCBpbmRleCA9IGNhbGxGcmFtZS0+cihpKS5pKCkgLSAxOwogICAg
ICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IDA7CiAgICAgICAgIGlmIChzdWJzY3JpcHQgPT0gZXhwZWN0
ZWRTdWJzY3JpcHQgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIChiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpID09IGl0LT5jYWNoZWRTdHJ1Y3R1cmUoKSkgJiYgaXQtPmdldE9mZnNldChp
bmRleCwgb2Zmc2V0KSkgewogICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkg
PSBKU1ZhbHVlKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldERpcmVjdE9mZnNldChvZmZzZXQpKTsK
ICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9wbmFtZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw2ICsyNTUs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9jcmVhdGVfYWN0aXZhdGlvbikKICAgICAgICAgREVGSU5FX09QKG9wX2VxKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZXFfbnVsbCkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92
YWwpCkBAIC0zMTksOCArMzIwLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3Bl
KQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfYnlfdmFsKQpAQCAtNDQxLDYgKzQ0NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jcmVhdGVfdGhpcykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RpdikKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2VxKQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfZ2V0X2J5X3ZhbCkKQEAgLTQ3OCw4ICs0ODMsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5j
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9v
Zl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjayk7CkBAIC01MzcsNiArNTQ1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3Bl
cnR5U3R1YkNvbXBpbGF0aQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQYXRoQmVnaW5M
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4pOwogICAgICAgICBp
bmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKICAgICAgICAgaW5mby5w
YXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVDaGVjayA9IE1hY3JvQXNzZW1ibGVyOjpkaWZm
ZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9j
YXRpb25PZihnZXRTdHJ1Y3R1cmVDaGVjaykpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5l
LnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoZ2V0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkBAIC01NTAsNiArNTU5
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgIGNhc2Ug
UHV0QnlJZDoKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRpb24g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5wYXRj
aC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlm
ZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YocHV0U3RydWN0dXJlVG9Db21wYXJlKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFz
ZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
aW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtC
dWZmZXIubG9jYXRpb25PZihwdXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIGdldFN0cnVjdHVyZVRvQ29tcGFy
ZTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgZ2V0U3RydWN0dXJlQ2hl
Y2s7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWxDb21wYWN0IGdldERpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKQEAgLTE4NSwx
NyArMTg2LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKIAotICAgICAgICBQcm9wZXJ0
eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQ
cm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oCisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJHZXRC
eUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQ
YXRoQmVnaW4sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVj
dHVyZVRvQ29tcGFyZSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1w
IHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxl
TG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwsIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBwdXRSZXN1bHQpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29t
cGFjdCBkaXNwbGFjZW1lbnRMYWJlbCwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0
IGRpc3BsYWNlbWVudExhYmVsMSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlz
cGxhY2VtZW50TGFiZWwyLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwx
LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2Vt
ZW50TGFiZWwyLAogI2VuZGlmCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0
UmVzdWx0KQogICAgICAgICAgICAgOiBtX3R5cGUoR2V0QnlJZCkKICAgICAgICAgICAgICwgYnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90
UGF0aEJlZ2luKQogICAgICAgICAgICAgLCBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJl
VG9Db21wYXJlKQogICAgICAgICAgICAgLCBnZXRTdHJ1Y3R1cmVDaGVjayhzdHJ1Y3R1cmVDaGVj
aykKKyAgICAgICAgICAgICwgcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2Fk
KQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAsIGdldERpc3BsYWNlbWVudExhYmVs
KGRpc3BsYWNlbWVudExhYmVsKQogI2Vsc2UKQEAgLTIwNiwxNSArMjE0LDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBQcm9wZXJ0eVN0dWJDb21w
aWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICBQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm8oCisgICAgICAgICAgICBQcm9wZXJ0eVN0dWJQdXRCeUlkX1QsIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4s
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29t
cGFyZSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBw
cm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsKQorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsCiAjZWxzZQotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMgogI2VuZGlmCisgICAgICAgICAg
ICApCiAgICAgICAgICAgICA6IG1fdHlwZShQdXRCeUlkKQogICAgICAgICAgICAgLCBieXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAsIGhvdFBhdGhCZWdpbihob3RQYXRo
QmVnaW4pCisgICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdl
TG9hZCkKICAgICAgICAgICAgICwgcHV0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29t
cGFyZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBwdXREaXNwbGFjZW1lbnRM
YWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKQEAgLTI5NSw0MCArMzA5LDQwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIEpJVChnbG9iYWxEYXRhLCBjb2RlQmxvY2spLnByaXZh
dGVDb21waWxlKGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBlZmZvcnQpOwogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90byhKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90byhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBK
SVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29k
ZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVj
dHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgcmV0dXJuQWRkcmVzcywgY2FsbEZyYW1l
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkU2VsZkxp
c3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBv
bHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNp
emVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklU
IGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVP
ZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdChzdHViSW5mbywgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBj
dXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCk7CiAgICAg
ICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90b0xpc3QoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1Yklu
Zm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBjdXJyZW50SW5kZXgs
IHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0
LCBjYWxsRnJhbWUpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21w
aWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxp
c3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAg
ICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAg
ICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChzdHViSW5mbywgcHJvdG90
eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIGNoYWluLCBjb3VudCwg
aWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW4oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW4oSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAg
ICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1f
Ynl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGpp
dC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihzdHViSW5mbywgc3RydWN0dXJlLCBjaGFpbiwg
Y291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFt
ZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRC
eUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0
KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBq
aXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwpAQCAtMzU4LDgg
KzM3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlc2V0UGF0
Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwogICAgICAgICBz
dGF0aWMgdm9pZCByZXNldFBhdGNoUHV0QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1
YkluZm8qKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sq
IGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOwotICAgICAgICBzdGF0aWMg
dm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOworICAgICAgICBzdGF0aWMgdm9pZCBwYXRj
aEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0
cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShD
b2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Ym9vbCBkaXJlY3QpOwogICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaE1ldGhvZENhbGxQcm90byhK
U0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqIGNvZGVibG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiwg
U3RydWN0dXJlU3R1YkluZm8mLCBKU09iamVjdCosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiwgUmV0
dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVBhdGNoR2V0QXJy
YXlMZW5ndGgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtMzc3LDEyICszOTEsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVMaW5rUGFzcygpOwogICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7CiAgICAgICAgIEpJVENvZGUgcHJp
dmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ssIEpJVENvbXBpbGF0
aW9uRWZmb3J0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1
Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJl
U3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVk
T2Zmc2V0KTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0
cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwg
U3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFpbiosIHNpemVf
dCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24o
U3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Ym9vbCBkaXJlY3QpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50
LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdl
dEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQs
IFN0cnVjdHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCk7CiAKICAgICAgICAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBwcml2
YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhKU0dsb2JhbERhdGEqLCBUcmFtcG9saW5l
U3RydWN0dXJlKik7CiAgICAgICAgIExhYmVsIHByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChK
U0dsb2JhbERhdGEqLCBib29sIGlzQ29uc3RydWN0ID0gZmFsc2UpOwpAQCAtNDM2LDYgKzQ1MCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
KSB7IH0KICNlbmRpZgogCisgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsgTWF5QmVGaW5h
bCwgS25vd25Ob3RGaW5hbCB9OworCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYm9v
bCBnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQodW5zaWduZWQgb3AxLCB1bnNpZ25lZCBv
cDIsIHVuc2lnbmVkJiBvcCwgaW50MzJfdCYgY29uc3RhbnQpOwogCkBAIC00NjgsMTAgKzQ4NCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0
aCgpOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcs
IGludCBiYXNlVlJlZywgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRob2RDaGVjayA9IGZhbHNlKTsKLSAgICAgICAgdm9p
ZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0g
ICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0
ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lz
dGVySUQgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQs
IHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1
bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7
CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lzdGVySUQg
b2Zmc2V0LCBGaW5hbE9iamVjdE1vZGUgPSBNYXlCZUZpbmFsKTsKKyAgICAgICAgdm9pZCBjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAK
ICAgICAgICAgLy8gQXJpdGhtZXRpYyBvcGNvZGUgaGVscGVycwogICAgICAgICB2b2lkIGVtaXRB
ZGQzMkNvbnN0YW50KHVuc2lnbmVkIGRzdCwgdW5zaWduZWQgb3AsIGludDMyX3QgY29uc3RhbnQs
IFJlc3VsdFR5cGUgb3BUeXBlKTsKQEAgLTU0NywxMCArNTYzLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlVlJlZywgSWRl
bnRpZmllciopOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3Vs
dFZSZWcsIGludCBiYXNlVlJlZywgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRob2RDaGVjayA9IGZhbHNlKTsKLSAgICAg
ICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2Fj
aGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklE
IHNjcmF0Y2gpOwotICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAg
dm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGls
ZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNl
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBGaW5hbE9iamVjdE1vZGUgPSBNYXlCZUZpbmFsKTsKKyAg
ICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDI5LDExICs0Mjks
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBib29sIGRlc3RyCiAgICAgc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpvZmZzZXRPZklu
aGVyaXRvcklEKCkpKTsKIAogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5
IHN0b3JhZ2UgcG9pbnRlcgotICAgIGlmIChDbGFzc1R5cGU6Omhhc0lubGluZVN0b3JhZ2UoKSkg
ewotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHQs
IHN0b3JhZ2VQdHIpOwotICAgICAgICBzdG9yZVB0cihzdG9yYWdlUHRyLCBBZGRyZXNzKHJlc3Vs
dCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBDbGFzc1R5
cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKKyAgICBzdG9yZVB0cihUcnVzdGVkSW1t
UHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgSklUOjplbWl0
QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzY3JhdGNoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTQsMTYgKzc5
NCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKIAogICAg
IC8vIFZlcmlmeSBzdHJ1Y3R1cmUuCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVj
dCksIHJlZ1QwKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIp
OwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZXNvbHZlSW5mb0FkZHJlc3MpLCByZWdUMyk7CiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUlu
Zm8sIHN0cnVjdHVyZSkpLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVx
dWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsK
KyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSkpOwogCiAgICAgLy8gTG9hZCBwcm9wZXJ0eS4K
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVj
dCwgbV9wcm9wZXJ0eVN0b3JhZ2UpKSwgcmVnVDIpOwogICAgIGxvYWQzMihBZGRyZXNzKHJlZ1Qz
LCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZWdUMyk7Ci0g
ICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMiwgcmVnVDMsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsgLy8gcGF5bG9hZAotICAg
IGxvYWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1QxKTsgLy8gdGFnCisgICAgY29tcGlsZUdl
dERpcmVjdE9mZnNldChyZWdUMiwgcmVnVDEsIHJlZ1QwLCByZWdUMywgS25vd25Ob3RGaW5hbCk7
CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1Qx
LCByZWdUMCk7CiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyAoZHluYW1pYyA/IE9QQ09ERV9M
RU5HVEgob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykgOiBPUENPREVfTEVOR1RIKG9wX3Jlc29s
dmVfZ2xvYmFsKSksIGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAxLDkgKzcw
MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWMKIAogICAgIC8v
IExvYWQgY2FjaGVkIHByb3BlcnR5CiAgICAgLy8gQXNzdW1lIHRoYXQgdGhlIGdsb2JhbCBvYmpl
Y3QgYWx3YXlzIHVzZXMgZXh0ZXJuYWwgc3RvcmFnZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpKSwg
cmVnVDApOwogICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFs
UmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZWdUMSk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgocmVn
VDAsIHJlZ1QxLCBTY2FsZVB0ciksIHJlZ1QwKTsKKyAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0
KHJlZ1QwLCByZWdUMCwgcmVnVDEsIHJlZ1QwLCBLbm93bk5vdEZpbmFsKTsKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxf
YnlfaWQoSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICAvLyBBc3NlcnQgdGhhdCB0aGUgZm9s
bG93aW5nIGluc3RydWN0aW9uIGlzIGEgZ2V0X2J5X2lkLgotICAgIEFTU0VSVChtX2ludGVycHJl
dGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9t
ZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZCk7CisgICAgQVNTRVJUKG1f
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVO
R1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkCisgICAgICAg
IHx8IG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENP
REVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lKTsKICAgICAKICAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xFTkdU
SChvcF9tZXRob2RfY2hlY2spOwogICAgIApAQCAtMzMzLDcgKzMzNCw3IEBAIHZvaWQgSklUOjpj
b21waWxlR2V0QnlJZEhvdFBhdGgoKQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sg
PSBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkp
KTsKICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAgICAgCi0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1Qy
KTsKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVy
dGlibGVMb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVs
MSA9IGxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QyLCBw
YXRjaEdldEJ5SWREZWZhdWx0T2Zmc2V0KSwgcmVnVDApOyAvLyBwYXlsb2FkCiAgICAgRGF0YUxh
YmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDIgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNz
T2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJl
Z1QxKTsgLy8gdGFnCiAgICAgCkBAIC0zNDEsNyArMzQyLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVH
ZXRCeUlkSG90UGF0aCgpCiAgICAgCiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2Vx
dWVuY2VHZXRCeUlkSG90UGF0aCk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25J
bmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJ
ZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0
cnVjdHVyZUNoZWNrLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0
UmVzdWx0KSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJv
cGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVP
ZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywg
cHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJl
bDIsIHB1dFJlc3VsdCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCkBAIC0zOTksNyArNDAwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVk
SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1
cmUpKSkpOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMSk7CisgICAgQ29udmVydGlibGVMb2FkTGFiZWwg
cHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMSk7CiAgICAgRGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNo
KHJlZ1QyLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHBh
eWxvYWQKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIgPSBzdG9yZVB0cldpdGhB
ZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDMsIEFkZHJlc3MocmVnVDEsIHBhdGNoUHV0QnlJZERlZmF1
bHRPZmZzZXQpKTsgLy8gdGFnCiAgICAgCkBAIC00MDcsNyArNDA4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdU
MCwgcmVnVDIsIHJlZ1QxLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJy
aWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9u
SW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5
SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBk
aXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMikpOworICAgIG1fcHJvcGVydHlB
Y2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQ
cm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVj
dHVyZVRvQ29tcGFyZSwgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwxLCBk
aXNwbGFjZW1lbnRMYWJlbDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9p
ZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDMwLDMwICs0MzEsNDEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV9pZChJbnN0cnVjdAogfQogCiAvLyBDb21waWxlIGEgc3RvcmUgaW50byBhbiBv
YmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6
OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVl
VGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQg
SklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2
YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OwotICAgIGxvYWRQdHIoQWRk
cmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwot
ICAgIGVtaXRTdG9yZShvZmZzZXQsIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGJhc2UpOworICAg
IGlmIChpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKQorICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7
CisgICAgZW1pdFN0b3JlKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2FjaGVkT2Zmc2V0KSwgdmFsdWVU
YWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4g
b2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklU
Ojpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3Zv
aWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQ7CisgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgZW1pdExvYWQoaW5kZXhSZWxh
dGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIGJhc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIFJlZ2lzdGVySUQgdGVtcCA9IHJl
c3VsdFBheWxvYWQ7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgdGVtcCk7Ci0gICAgZW1pdExvYWQob2Zmc2V0LCByZXN1bHRU
YWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOworICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCB0ZW1wKTsKKyAgICBlbWl0TG9hZChp
bmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9h
ZCwgdGVtcCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBz
aXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNP
YmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxv
YWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBsb2FkUHRyKGJhc2UtPmFk
ZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRUYWcpOwotICAgIGxvYWQzMihBZGRyZXNz
KHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXls
b2FkKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZz
ZXQpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihiYXNlLT5sb2NhdGlvbkZvck9mZnNl
dChjYWNoZWRPZmZzZXQpKSwgcmVzdWx0VGFnKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVz
dWx0VGFnLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1
bHRQYXlsb2FkKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9y
YWdlKCksIHJlc3VsdFRhZyk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVz
dWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwog
fQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIC8vIFRoZSBjb2RlIGJl
bG93IGFzc3VtZXMgdGhhdCByZWdUMCBjb250YWlucyB0aGUgYmFzZVBheWxvYWQgYW5kIHJlZ1Qx
IGNvbnRhaW5zIHRoZSBiYXNlVGFnLiBSZXN0b3JlIHRoZW0gZnJvbSB0aGUgc3RhY2suCiAjaWYg
Q1BVKE1JUFMpIHx8IENQVShTSDQpIHx8IENQVShBUk0pCkBAIC00ODksNyArNTAxLDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIAogICAgIC8vIFJlYWxs
b2NhdGUgcHJvcGVydHkgc3RvcmFnZSBpZiBuZWVkZWQuCiAgICAgQ2FsbCBjYWxsVGFyZ2V0Owot
ICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCk7CisgICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAg
ICBpZiAod2lsbE5lZWRTdG9yYWdlUmVhbGxvYykgewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xp
bmUgd2FzIGNhbGxlZCB0byBsaWtlIGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwg
YWdhaW4gd2UgbmVlZCB0bwogICAgICAgICAvLyByZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZy
b20gdGhlIHN0YWNrLCB0byBwcmV2ZW50IHRoZSBzdGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWdu
ZWQuCkBAIC00OTksNyArNTExLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpbwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAg
ICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tp
cEFyZ3VtZW50KCk7IC8vIHZhbHVlCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0
ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
UHRyKG5ld1N0cnVjdHVyZSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKIApAQCAt
NTUzLDcgKzU2NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8K
ICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNz
LCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAK
LXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hH
ZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01NjEsMTUgKzU3MywxNCBAQCB2b2lkIEpJ
VDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5
IGdvIHRvIEpJVFN0dWJzOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3Qg
ZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0
X2J5X2lkX3NlbGZfZmFpbCkpOwogICAgIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1
ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHBy
b3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9v
ayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4u
ZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVj
dHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5w
YXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXQgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAvLyBwYXlsb2FkCi0gICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJl
bDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8v
IHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNh
Y2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0
aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5nZXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdl
KGNhY2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9h
ZCkpOyAvLyBwYXlsb2FkCisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3Jh
Z2UoY2FjaGVkT2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcp
KTsgLy8gdGFnCiB9CiAKLXZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIo
Y29kZUJsb2NrKTsKICAgICAKQEAgLTU3NywxMiArNTg4LDExIEBAIHZvaWQgSklUOjpwYXRjaFB1
dEJ5SWRSZXBsYWNlKENvZGVCbG9jayoKICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gY3Rp
X29wX3B1dF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0
aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24o
cmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoZGlyZWN0ID8gY3RpX29wX3B1dF9ieV9pZF9kaXJl
Y3RfZ2VuZXJpYyA6IGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYykpOwogICAgIAotICAgIGludCBv
ZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0
aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNo
IHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNo
LmJhc2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwxKSwg
b2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8g
cGF5bG9hZAotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2lu
LmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3Bs
YWNlbWVudExhYmVsMiksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy50YWcpKTsgLy8gdGFnCisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0Fj
dGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFz
ZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKGNhY2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
cGF5bG9hZCkpOyAvLyBwYXlsb2FkCisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxp
bmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9y
YWdlKGNhY2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSk7IC8vIHRhZwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTYyOSw3ICs2MzksNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9v
cF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAK
QEAgLTcwMCw3ICs3MTAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8o
U3RyCiB9CiAKIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBw
b2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBz
aXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZM
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgLy8gcmVnVDAgaG9s
ZHMgYSBKU0NlbGwqCiAgICAgSnVtcCBmYWlsdXJlQ2FzZSA9IGNoZWNrU3RydWN0dXJlKHJlZ1Qw
LCBzdHJ1Y3R1cmUpOwpAQCAtNzYwLDcgKzc3MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRTZWxmTGlzdCgKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24s
IENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJl
cywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtODI5LDcgKzgz
OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QKICAgICByZXBh
dGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0
aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5M
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8v
IHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEFTU0VSVChjb3VudCk7CkBAIC05MDQsNyArOTE0
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRp
bmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEFT
U0VSVChjb3VudCk7CkBAIC05NzUsMTMgKzk4NSwyNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0
aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlz
dCkpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lz
dGVySUQgb2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBS
ZWdpc3RlcklEIG9mZnNldCwgRmluYWxPYmplY3RNb2RlIGZpbmFsT2JqZWN0TW9kZSkKIHsKICAg
ICBBU1NFUlQoc2l6ZW9mKEpTVmFsdWUpID09IDgpOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAg
IGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9h
ZFB0cihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7CisgICAgaWYgKGZpbmFsT2JqZWN0
TW9kZSA9PSBNYXlCZUZpbmFsKSB7CisgICAgICAgIEp1bXAgaXNJbmxpbmUgPSBicmFuY2gzMihM
ZXNzVGhhbiwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7Cisg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVT
dG9yYWdlKCkpLCBiYXNlKTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICBp
c0lubGluZS5saW5rKHRoaXMpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSwgYmFzZSk7CisgICAgICAgIGRvbmUubGluayh0aGlzKTsKKyAg
ICB9IGVsc2UgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgSnVtcCBpc091dE9mTGlu
ZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KSk7CisgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICAgICAgaXNP
dXRPZkxpbmUubGluayh0aGlzKTsKKyNlbmRpZgorICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgfQor
ICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkgLSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgbG9hZDMyKEJh
c2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy50YWcpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSksIHJlc3VsdFRhZyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFt
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTAwNiw2ICsxMDMwLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGxvYWQzMihhZGRy
ZXNzRm9yKGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMyk7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMywgQWRkcmVzcyhyZWdU
MSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fbnVtQ2FjaGVhYmxl
U2xvdHMpKSkpOworICAgIGFkZDMyKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLCBtX29mZnNldEJhc2UpKSwgcmVnVDMpOwogICAgIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMpOyAgICAKICAgICAKICAg
ICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsMTAgKzE1MSwyNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogfQogCi12b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQordm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlIGZp
bmFsT2JqZWN0TW9kZSkKIHsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRl
eChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAwKSwgcmVzdWx0KTsKKyAgICBBU1NFUlQoc2l6
ZW9mKEpTVmFsdWUpID09IDgpOworICAgIAorICAgIGlmIChmaW5hbE9iamVjdE1vZGUgPT0gTWF5
QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9m
ZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
c2NyYXRjaCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxpbmUu
bGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwgYmFzZSwgc2NyYXRjaCk7CisgICAgICAgIGRvbmUubGluayh0aGlzKTsKKyAg
ICB9IGVsc2UgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgSnVtcCBpc091dE9mTGlu
ZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KSk7CisgICAgICAgIGJyZWFrcG9pbnQoKTsKKyAgICAgICAgaXNP
dXRPZkxpbmUubGluayh0aGlzKTsKKyNlbmRpZgorICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaCk7CisgICAg
fQorICAgIGxvYWRQdHIoQmFzZUluZGV4KHNjcmF0Y2gsIG9mZnNldCwgU2NhbGVQdHIsIC1pbmxp
bmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHQpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTI4Myw3ICsyOTksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1
Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICAvLyBBc3NlcnQgdGhhdCB0aGUgZm9sbG93aW5nIGluc3Ry
dWN0aW9uIGlzIGEgZ2V0X2J5X2lkLgotICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNv
ZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2sp
KS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZCk7CisgICAgQVNTRVJUKG1faW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9wX21ldGhv
ZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkCisgICAgICAgIHx8IG1faW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9w
X21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsK
IAogICAgIGN1cnJlbnRJbnN0cnVjdGlvbiArPSBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVj
ayk7CiAgICAgdW5zaWduZWQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CkBAIC0zNzMsMTQgKzM5MCwxNCBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQ
YXRoKGludCBiYXNlCiAgICAgUGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAgIGFk
ZFNsb3dDYXNlKHN0cnVjdHVyZUNoZWNrKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMCk7CisgICAgQ29udmVy
dGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxlTG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdU
MCk7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbCA9IGxvYWRQdHJXaXRo
Q29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1QwLCBwYXRjaEdldEJ5SWREZWZh
dWx0T2Zmc2V0KSwgcmVnVDApOwogCiAgICAgTGFiZWwgcHV0UmVzdWx0KHRoaXMpOwogCiAgICAg
RU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VHZXRCeUlkSG90UGF0aCk7CiAKLSAg
ICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21w
aWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0
aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBkaXNwbGFjZW1lbnRM
YWJlbCwgcHV0UmVzdWx0KSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5h
cHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1f
Ynl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3Vs
dCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CkBAIC00NDAsMTQgKzQ1NywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qCiAgICAgRGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7CiAK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpKSwgcmVnVDIpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNl
bWVudExhYmVsID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1QxLCBBZGRyZXNz
KHJlZ1QyLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7CiAKICAgICBFTkRfVU5JTlRFUlJV
UFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogCiAgICAgZW1pdFdyaXRlQmFycmllcihy
ZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVC
YXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0
aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1
dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJl
LCBkaXNwbGFjZW1lbnRMYWJlbCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbklu
Zm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlk
LCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgcHJv
cGVydHlTdG9yYWdlTG9hZCwgZGlzcGxhY2VtZW50TGFiZWwpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDcxLDI4ICs0ODgsNDEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdAogCiAvLyBDb21waWxlIGEg
c3RvcmUgaW50byBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSB0
aGUKIC8vIHZhbHVlIGluIG9iamVjdFJlZy4KLXZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zm
c2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCkKK3ZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGludCBv
ZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgbG9hZFB0cihBZGRy
ZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7Ci0g
ICAgc3RvcmVQdHIodmFsdWUsIEFkZHJlc3MoYmFzZSwgb2Zmc2V0KSk7CisgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgc3RvcmVQdHIodmFsdWUsIEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2l6ZW9mKEpTVmFs
dWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9m
ZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgc3RvcmVQdHIodmFsdWUsIEFk
ZHJlc3MoYmFzZSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNh
Y2hlZE9mZnNldCkpKTsKIH0KIAogLy8gQ29tcGlsZSBhIGxvYWQgZnJvbSBhbiBvYmplY3QncyBw
cm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkK
IHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0KSwgcmVzdWx0
KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2l6
ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpLCByZXN1
bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoQWRkcmVzcyhi
YXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHQpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXpl
X3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmpl
Y3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0
KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNh
Y2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihiYXNlLT5sb2NhdGlvbkZvck9mZnNldChj
YWNoZWRPZmZzZXQpLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHQpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRP
ZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHQpOwogfQogCi12
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIEp1bXBMaXN0IGZhaWx1cmVDYXNl
czsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmUu
CkBAIC01MjIsNyArNTUyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpbwogI2VuZGlmCiAgICAgCiAgICAgLy8gZW1pdCBhIGNhbGwgb25seSBpZiBzdG9yYWdlIHJl
YWxsb2MgaXMgbmVlZGVkCi0gICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpOwogICAgIGlmICh3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jKSB7CiAgICAgICAg
IC8vIFRoaXMgdHJhbXBvbGluZSB3YXMgY2FsbGVkIHRvIGxpa2UgYSBKSVQgc3R1YjsgYmVmb3Jl
IHdlIGNhbiBjYW4gY2FsbCBhZ2FpbiB3ZSBuZWVkIHRvCiAgICAgICAgIC8vIHJlbW92ZSB0aGUg
cmV0dXJuIGFkZHJlc3MgZnJvbSB0aGUgc3RhY2ssIHRvIHByZXZlbnQgdGhlIHN0YWNrIGZyb20g
YmVjb21pbmcgbWlzYWxpZ25lZC4KQEAgLTUzMiw3ICs1NjIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgp
OyAvLyBiYXNlCiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyBpZGVudAogICAg
ICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gdmFsdWUKLSAgICAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIob2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSk7CiAgICAgICAgIHN0dWJDYWxsLmNh
bGwocmVnVDApOwogICAgICAgICBlbWl0R2V0SklUU3R1YkFyZygyLCByZWdUMSk7CkBAIC01NzIs
NyArNjAyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENv
ZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9p
ZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpwYXRjaEdldEJ5
SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hC
dWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTgwLDE0ICs2MTAsMTMgQEAgdm9pZCBKSVQ6OnBhdGNo
R2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBj
dGlfb3BfZ2V0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8gYW55dGhpbmcgaW50ZXJl
c3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlv
bihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkp
OwogCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9mZnNldDsKLQog
ICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBsb2FkIGZy
b20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9mZnNldChz
dHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJlKSwgc3RydWN0
dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5k
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRp
c3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0
cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRP
ZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQp
LCBpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCi12b2lkIEpJVDo6cGF0
Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRj
aFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAg
UmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTU5NSwxMSArNjI0
LDEwIEBAIHZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayoKICAgICAvLyBT
aG91bGQgcHJvYmFibHkgZ28gdG8gY3RpX29wX3B1dF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vz
bid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVy
LnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoZGlyZWN0
ID8gY3RpX29wX3B1dF9ieV9pZF9kaXJlY3RfZ2VuZXJpYyA6IGN0aV9vcF9wdXRfYnlfaWRfZ2Vu
ZXJpYykpOwogCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9mZnNl
dDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBs
b2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlKSwg
c3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5k
aXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5z
dHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0
T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5wcm9wZXJ0eVN0b3JhZ2VMb2Fk
KSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5y
ZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXRSZWxhdGl2
ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAKIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KQpAQCAtNjQzLDcgKzY3MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJy
YXlMZW4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRk
cmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9hcnJheV9mYWlsKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIFRoZSBw
cm90b3R5cGUgb2JqZWN0IGRlZmluaXRlbHkgZXhpc3RzIChpZiB0aGlzIHN0dWIgZXhpc3RzIHRo
ZSBDb2RlQmxvY2sgaXMgcmVmZXJlbmNpbmcgYSBTdHJ1Y3R1cmUgdGhhdCBpcwogICAgIC8vIHJl
ZmVyZW5jaW5nIHRoZSBwcm90b3R5cGUgb2JqZWN0IC0gbGV0J3Mgc3BlY3VsYXRpdmVseSBsb2Fk
IGl0J3MgdGFibGUgbmljZSBhbmQgZWFybHkhKQpAQCAtNzEwLDcgKzczOCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHIKICAgICByZXBhdGNoQnVmZmVyLnJlbGlu
a0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9i
eV9pZF9wcm90b19saXN0KSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRT
ZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudElu
ZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAg
IEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKICAg
ICBib29sIG5lZWRzU3R1YkxpbmsgPSBmYWxzZTsKQEAgLTc3MCw3ICs3OTgsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViQ29kZS5jb2RlKCkpKTsKIH0K
IAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBl
U3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3Rv
dHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0
ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5j
aW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBl
IG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVh
cmx5ISkKQEAgLTgzOSw3ICs4NjcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9j
YXRpb25MYWJlbChzdHViQ29kZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJ
bmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90
IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogICAgIEp1bXBMaXN0IGJ1Y2tldHNPZkZhaWw7
CkBAIC05MTQsNyArOTQyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9u
TGFiZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNp
emVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEFTU0VSVChjb3VudCk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMjE4
MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTU0LDcgKzk1NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpJVFRodW5rczo6dHJ5
Q2FjaGVHZXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
Y2FsbEZyYW1lLCBiYXNlVmFsdWUsIHNsb3Quc2xvdEJhc2UoKSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQpOwogICAgIGlmICghY291bnQpIHsKICAgICAgICAgc3R1YkluZm8tPmFjY2Vzc1R5cGUgPSBh
Y2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM7CkBAIC0xNDg2LDEzICsxNDg2LDE2IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHV0X2IKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgaW50MzJfdCBvbGRTaXplID0gc3Rh
Y2tGcmFtZS5hcmdzWzNdLmludDMyKCk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBz
dGFja0ZyYW1lLmFyZ3NbNF0uc3RydWN0dXJlKCk7Ci0gICAgaW50MzJfdCBuZXdTaXplID0gbmV3
U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGludDMyX3QgbmV3U2l6
ZSA9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICAKKyAgICBBU1NFUlQo
b2xkU2l6ZSA+PSAwKTsKKyAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAgQVNT
RVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gKnN0YWNrRnJhbWUu
Z2xvYmFsRGF0YTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGJhc2UtPmdyb3dQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7Ci0gICAgYmFzZS0+
c2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7
CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBiYXNlLT5ncm93T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBvbGRTaXplLCBuZXdTaXplKTsKKyAgICBiYXNlLT5zZXRPdXRPZkxp
bmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CiAKICAgICBy
ZXR1cm4gYmFzZTsKIH0KQEAgLTE4MTQsNyArMTgxNyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0
KCkpOwogICAgIEpTT2JqZWN0KiBzbG90QmFzZU9iamVjdCA9IGFzT2JqZWN0KHNsb3Quc2xvdEJh
c2UoKSk7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgIGlm
IChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKQogICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoY29kZUJsb2NrLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihj
dGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2ZhaWwpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODk1LDcgKzg5NSwxMyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0
X2J5X2lkCiAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1By
b3BlcnR5Q2FjaGluZygpKSB7CiAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAg
ICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
c3RydWN0dXJlKTsKLSAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
c2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2dldF9ieV9pZCk7CisgICAgICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7
CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCkBAIC05NDAsNyArOTQ2LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xv
dC5iYXNlKCkpIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09
IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYm
IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5wcmV2aW91c0lEKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFs
aWRhdGVkKCkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKQEAgLTk1
Miw3ICs5NTgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAg
ICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwog
ICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpOwpAQCAtOTYwLDE2ICs5NjksMjggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0
cnVjdHVyZUNoYWluLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRf
b2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAg
ICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpOworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTkxOSw2ICs5
MTksMjQgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBkaXNwYXRjaCgzKQogCiAKK21hY3Jv
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0
LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYXNzZXJ0KG1hY3JvIChvaykg
YmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBv
YmplY3RBbmRTdG9yYWdlCisgICAgbG9hZGkgVGFnT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VD
YXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHRhZworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0
b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5bG9hZAorZW5kCisKK21hY3JvIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHRh
ZywgcGF5bG9hZCkKKyAgICBiaWx0IHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHksIC5pc0lubGluZQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2Jq
ZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAgICBqbXAgLnJlYWR5CisuaXNJbmxp
bmU6CisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGluZVN0b3JhZ2UgKyBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RBbmRTdG9yYWdlCisucmVhZHk6CisgICAgbG9hZGkgVGFn
T2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9w
ZXJ0eU9mZnNldCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgLSA4ICogSW5saW5l
U3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgcGF5
bG9hZAorZW5kCisKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJh
bmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxv
YWQuCkBAIC05MzAsOSArOTQ4LDcgQEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQog
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAxMltQ
Q10sIHNsb3cKICAgICBsb2FkaSAxNltQQ10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIK
LSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwodDEsIHQwLCB0MiwgdDMpCiAgICAgbG9hZGkg
NFtQQ10sIHQwCiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KQEAgLTEwODcsMzEgKzExMDMsNDQgQEAg
X2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAotX2xs
aW50X29wX2dldF9ieV9pZDoKKyMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2Fj
aGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyMgb3Bjb2RlLiBXZSBkbywg
aG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywg
c2luY2UKKyMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0
aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5l
dyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyMgd2Ug
d291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKworbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgV2Ugb25seSBkbyBtb25vbW9y
cGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUK
LSAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hh
bmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCi0gICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4g
QXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQotICAg
ICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBz
bG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKLSAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBh
bnl3YXkuCiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNs
b3cpCiAgICAgbG9hZGkgMjBbUENdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAu
b3BHZXRCeUlkU2xvdwotICAgIGxvYWRpIDRbUENdLCB0MQotICAgIGxvYWRpIFRhZ09mZnNldFt0
MCwgdDJdLCB0MwotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKLSAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQotICAgIGxvYWRpIDMyW1BDXSwgdDEKLSAgICB2YWx1ZVByb2ZpbGUodDMs
IHQyLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAg
ICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3Jh
dGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BH
ZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgICAgICAgICBsb2Fk
aSBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQyCisgICAgICAgICAgICBz
dG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIGxvYWRpIDMyW1BDXSwg
dDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MiwgdDEpCisgICAgICAgICAg
ICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCisKKyAgICAub3BHZXRCeUlkU2xvdzoKKyAgICAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgICAgICBkaXNw
YXRjaCg5KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3aXRoSW5s
aW5lU3RvcmFnZSkKIAotLm9wR2V0QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmU6CisgICAgZ2V0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBf
bGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CkBAIC0xMTMwLDY4ICsxMTU5LDk2IEBAIF9s
bGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGlu
dF9vcF9wdXRfYnlfaWQ6CittYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0
MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxvYWRpIDIwW1BDXSwgdDEKLSAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQotICAgIHdyaXRlQmFycmllcih0MCwgdDIp
Ci0gICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQotICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFt0MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICAgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCBzY3JhdGNoLCB0MikKKyAgICAgICAg
ICAgIHdyaXRlQmFycmllcihzY3JhdGNoLCB0MikKKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNo
LCBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2go
OSkKKyAgICAgICAgZW5kKQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgcHV0QnlJ
ZCh3aXRoSW5saW5lU3RvcmFnZSkKIAogLm9wUHV0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIGRpc3BhdGNoKDkpCiAKIAotbWFjcm8g
cHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKK19sbGludF9vcF9wdXRfYnlfaWRf
b3V0X29mX2xpbmU6CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKKworCittYWNy
byBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2Up
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2
W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywg
dDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKICAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENo
ZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
KQogICAgIGxvYWRpIDIwW1BDXSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQzCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDIsIHQxLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQotICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W3QzXQotICAgIGxvYWRpIDI0W1BDXSwgdDEKLSAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbdDNdCi0gICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQot
ICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAg
ICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3JhZ2UsIHQzCisgICAgICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KHQxLCB0MikKKyAgICAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgICAgICAg
ICAgbG9hZGkgMjRbUENdLCB0MQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRp
b25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJl
Q2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9
IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0
aGUgcHJvdG8KKworICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAo
b2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92
ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3Jh
dGNoLCBvayBlbmQpCisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisubG9vcDoKKyAgICBsb2FkaSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQor
ICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAgIGFk
ZHAgNCwgc2NyYXRjaAorICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFj
cm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0
aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJh
bnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9s
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRp
b24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAg
ICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0
cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCi0gICAgICAgIAotICAgICAgICAgICAgbG9h
ZHAgMjhbUENdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBz
Y3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0
b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56
IHNjcmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlw
ZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQotICAgICAgICAubG9v
cDoKLSAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAotICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKLSAgICAgICAgICAgIGJwbmVxIG9s
ZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Ci0gICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gK
LSAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xk
U3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0gICAgICAgIGVuZCkK
KyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aElubGluZVN0
b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywgd2l0aE91
dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBAIC0xMjYxLDkgKzEz
MTgsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwg
dDAKICAgICBzdWJpIDEsIHQwCiAgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdwotICAgIGxvYWRwIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3Qy
LCB0MCwgOF0sIHQxCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAg
IGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9vZmZzZXRCYXNlW3QzXSwgdDAKKyAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQwLCB0MiwgdDEsIHQzKQogICAgIGxvYWRpIDRb
UENdLCB0MAogICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTc3OCw2ICs3NzgsMjIgQEAgX2xsaW50X29wX2lz
X3N0cmluZzoKICAgICBkaXNwYXRjaCgzKQogCiAKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXRLbm93bk5vdEZpbmFsKHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB2
YWx1ZSkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgcHJvcGVydHlPZmZzZXQsIElubGlu
ZVN0b3JhZ2VDYXBhY2l0eSwgb2sgZW5kKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGlu
ZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAgICBsb2FkcCAt
OCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNl
dCwgOF0sIHZhbHVlCitlbmQKKworbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldChw
cm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCisgICAgYmlsdCBwcm9wZXJ0
eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9y
YWdlCisgICAgam1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6
bV9pbmxpbmVTdG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0QW5kU3Rv
cmFnZQorLnJlYWR5OgorICAgIGxvYWRwIC04ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVj
dEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdmFsdWUKK2VuZAorCiBtYWNybyByZXNv
bHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAg
ICAjIDhbUEIsIFBDLCA4XSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KQEAgLTc4OSw4ICs4
MDUsNyBAQCBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCiAgICAgYnBuZXEgdDEsIDI0W1BCLCBQQywgOF0sIHNsb3cK
ICAgICBsb2FkaXMgMzJbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRwIFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRQ
cm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKICAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MAogICAgIHN0b3JlcCB0MiwgW2NmciwgdDAsIDhdCiAgICAgbG9hZHAgKHNpemUgLSAx
KSAqIDhbUEIsIFBDLCA4XSwgdDAKQEAgLTkzNyw3ICs5NTIsNyBAQCBfbGxpbnRfb3BfcHV0X2ds
b2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkKIAogCi1fbGxpbnRfb3BfZ2V0X2J5X2lk
OgorbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93
LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKICAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIs
IGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCkBA
IC05NDgsMTggKzk2MywzMCBAQCBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAgIGxvYWRwIDMyW1BC
LCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQzLCAub3BH
ZXRCeUlkU2xvdykKICAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwgdDIKLSAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0
MQotICAgIGxvYWRwIFt0MCwgdDJdLCB0MwotICAgIHN0b3JlcCB0MywgW2NmciwgdDEsIDhdCi0g
ICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKLSAgICB2YWx1ZVByb2ZpbGUodDMsIHQxKQotICAg
IGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MywKKyAgICAg
ICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Cisg
ICAgICAgICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgbG9hZHAgW3By
b3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBzdG9yZXAgc2NyYXRjaCwg
W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkcCA2NFtQQiwgUEMsIDhdLCB0MQorICAgICAg
ICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkK
KyAgICAgICAgZW5kKQorICAgICAgICAgICAgCisgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgZGlzcGF0
Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElubGlu
ZVN0b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xs
aW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtOTc4LDY1ICsxMDA1LDkzIEBAIF9sbGlu
dF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9v
cF9wdXRfYnlfaWQ6CittYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQ
QiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGlzIDQwW1BCLCBQQywgOF0s
IHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCi0gICAgd3JpdGVCYXJyaWVy
KHQwKQotICAgIHN0b3JlcCB0MCwgW3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFBy
b3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAo
cHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDQwW1BC
LCBQQywgOF0sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCBzY3Jh
dGNoKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQwKQorICAgICAgICAgICAgc3RvcmVwIHNj
cmF0Y2gsIFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAg
ICAgICAgZW5kKQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgcHV0QnlJZCh3aXRo
SW5saW5lU3RvcmFnZSkKIAogLm9wUHV0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIGRpc3BhdGNoKDkpCiAKIAotbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKK19sbGludF9vcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CisgICAgcHV0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKKworCittYWNybyBwdXRC
eUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzLCBnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAg
MzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAs
IC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgogICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlv
bmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0
MSwgdDMpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxKQotICAgIHdyaXRlQmFycmllcih0MSkKLSAgICBzdG9yZXAg
dDEsIFt0M10KLSAgICBsb2FkcCA0OFtQQiwgUEMsIDhdLCB0MQotICAgIHN0b3JlcCB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3Rv
cmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlT
dG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0
MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCisgICAgICAgICAg
ICB3cml0ZUJhcnJpZXIodDEpCisgICAgICAgICAgICBzdG9yZXAgdDEsIFt0M10KKyAgICAgICAg
ICAgIGxvYWRwIDQ4W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQp
CitlbmQKKworbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkK
K2VuZAorCittYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gp
CisgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xk
U3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICBsb2FkcCA1NltQQiwgUEMsIDhd
LCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQor
ICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAg
IGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBicGVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQorLmxvb3A6
CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0Nl
bGwKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVy
ZQorICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCAub3BQdXRCeUlkU2xvdworICAg
IGFkZHAgOCwgc2NyYXRjaAorICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3Ry
dWN0dXJlXSwgVmFsdWVOdWxsLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9B
ZGRpdGlvbmFsQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KG5vQWRkaXRpb25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAg
ICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNv
bnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVy
ZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCi0gICAgICAgICAgICBsb2FkcCA1NltQQiwgUEMsIDhd
LCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCi0gICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRj
aF0sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKLSAgICAgICAgICAgIGJwZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1
Y3R1cmVdLCBWYWx1ZU51bGwsIC5kb25lCi0gICAgICAgIC5sb29wOgotICAgICAgICAgICAgbG9h
ZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAg
ICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJl
Ci0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAg
ICAgICAgYWRkcCA4LCBzY3JhdGNoCi0gICAgICAgICAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKLSAgICAgICAgLmRvbmU6Ci0g
ICAgICAgIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNoZWNrcywg
d2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihzdHJ1Y3R1cmVDaGFpbkNo
ZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9ieV92YWw6CkBA
IC0xMTA2LDggKzExNjEsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCiAgICAgc3ViaSAxLCB0MwogICAgIGJpYWVxIHQz
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QxXSwgLm9wR2V0
QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0
MAotICAgIGxvYWRwIFt0MCwgdDMsIDhdLCB0MAorICAgIGFkZGkgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6bV9vZmZzZXRCYXNlW3QxXSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQzLCB0MCwgdDApCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBzdG9yZXAg
dDAsIFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
MjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDEzIEBAIGNvbnN0IExMSW50UmV0dXJu
UEMgPSBBcmd1bWVudENvdW50ICsgVGEKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgSGFzaEZsYWdz
OEJpdEJ1ZmZlciA9IDY0CiAKKyMgUHJvcGVydHkgc3RvcmFnZSBjb25zdGFudHMKK2lmIEpTVkFM
VUU2NAorICAgIGNvbnN0IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDQKK2Vsc2UKKyAgICBjb25z
dCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA2CitlbmQKKwogIyBBbGxvY2F0aW9uIGNvbnN0YW50
cwogaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0g
MQpAQCAtMzEyLDggKzMxOSw3IEBAIG1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xh
c3NJbmQKICAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQogICAgICAgICBzdG9yZXAg
c3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIDAs
IEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KLSAgICAgICAgYWRkcCBzaXplb2YgSlNP
YmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6
Om1fb3V0T2ZMaW5lU3RvcmFnZVtyZXN1bHRdCiAgICAgZW5kCiBlbmQKIApAQCAtNDgxLDYgKzQ4
NywyMSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CiAgICAgZGlzcGF0Y2goNSkKIAog
CittYWNybyB3aXRoSW5saW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29udGlu
dWF0aW9uKQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IGlzIHRoZSBwcm9wZXJ0eSBz
dG9yYWdlLCBhbmQgdGhhdCB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UgcmVnaXN0ZXIgaXMg
dW51c2VkLgorICAgIGNvbnRpbnVhdGlvbihvYmplY3QsIHByb3BlcnR5U3RvcmFnZSkKK2VuZAor
CittYWNybyB3aXRoT3V0T2ZMaW5lU3RvcmFnZShvYmplY3QsIHByb3BlcnR5U3RvcmFnZSwgY29u
dGludWF0aW9uKQorICAgIGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0
XSwgcHJvcGVydHlTdG9yYWdlCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBwcm9wZXJ0eVN0b3Jh
Z2UgcmVnaXN0ZXIgbm93IHBvaW50cyB0byB0aGUKKyAgICAjIHByb3BlcnR5IHN0b3JhZ2UsIGFu
ZCB0aGF0IHRoZSBvYmplY3QgcmVnaXN0ZXIgbWF5IGJlIHJldXNlZAorICAgICMgaWYgdGhlIG9i
amVjdCBwb2ludGVyIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KKyAgICBjb250aW51YXRpb24ocHJv
cGVydHlTdG9yYWdlLCBvYmplY3QpCitlbmQKKworCiBfbGxpbnRfb3BfZGVsX2J5X2lkOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWxf
YnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJ
KHdvcmtpbmcgY29weSkKQEAgLTU1NSw3ICs1NTUsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAg
ICBlbmQKICAgICAKICAgICBkZWYgaGFuZGxlWDg2QWRkKGtpbmQpCi0gICAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGlm
IG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAg
ICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICAgICAgZW5kCisgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJd
LmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAK
QEAgLTU2OCw3ICs1NzIsMTEgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgZWxzaWYgb3Bl
cmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKLSAgICAgICAgICAg
ICRhc20ucHV0cyAibGVhI3t4ODZTdWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0g
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImxl
YSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICAgICAgICBlbmQKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdW5sZXNz
IEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQogICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7eDg2T3BlcmFuZHMoa2luZCwga2luZCl9
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1bmN0aW9u
U3RydWN0dXJlOwotICAgICAgICBzaXplX3QgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CkBAIC0yNjIsNyAr
MjYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
ICAgIFN0cnVjdHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym91bmRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG5hbWVk
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KLSAgICAgICAgc2l6ZV90IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZ1
bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9
CiAgICAgICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBw
cml2YXRlTmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDI0ICs5Myw1NCBAQCB2b2lkIEpTT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsCiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlv
bGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAg
ICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAj
ZW5kaWYKKyAgICAKKyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGlu
ZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNp
emUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duTm9uRmlu
YWxPYmplY3QoKTsKKyAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBz
bGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2Ug
dHlwZS1wdW5uZWQgcG9pbnRlcnMuCisgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOworICAg
ICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
LCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRp
Y19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0
T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7Cisg
ICAgfQorCisgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAorI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0g
d2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyNlbmRpZgorfQorCit2b2lkIEpT
RmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU0ZpbmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxP
YmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
ICZzX2luZm8pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIHdhc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uOworICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRp
b24gPSBmYWxzZTsKKyNlbmRpZgorICAgIAogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09i
amVjdC0+cHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICBpZiAodGhpc09i
amVjdC0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1
ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwotICAgIGVsc2UgeworICAgIFByb3BlcnR5U3RvcmFn
ZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdG9y
YWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOwogICAgICAgICAvLyBXZSBo
YXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJs
b29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAg
ICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7Ci0gICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgm
dGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3Rv
cmFnZVNpemUpOworICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKICAgICAgICAg
c3RvcmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0gICAgICAgIHRo
aXNPYmplY3QtPm1fcHJvcGVydHlTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6
VW5jaGVja2VkKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVTdG9yYWdlLnNldChz
dG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKICAgICB9CiAKICAgICBpZiAodGhp
c09iamVjdC0+bV9pbmhlcml0b3JJRCkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faW5oZXJpdG9ySUQpOwogCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVj
dC0+c3RydWN0dXJlKCktPmlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+aW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6
ZSk7CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JE
ZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247
CiAjZW5kaWYKQEAgLTE1Myw4ICsxODMsOCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhCiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgOyBvYmog
PSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG9i
ai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTI3Miw3
ICszMDIsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlCiAKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBp
ZiAodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgewor
ICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkg
ewogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnREZWxldGUgJiYgIWV4ZWMtPmdsb2JhbERh
dGEoKS5pc0luRGVmaW5lT3duUHJvcGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgdGhpc09iamVjdC0+cmVtb3ZlRGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lKTsKQEAgLTM5NCw3ICs0MjQsNyBAQCBib29sIEpTT2JqZWN0Ojpwcm9wZXJ0eUlz
RW51bWVyYWJsZShFeGVjCiBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVj
aWZpY1ZhbHVlKSBjb25zdAogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN0
cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCisgICAgaWYgKGlzVmFsaWRPZmZz
ZXQoc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIHN0YXRpYyB0YWJsZT8gLSBzaG91
bGQgcHJvYmFibHkKQEAgLTUxNiwyMCArNTQ2LDIwIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGUKIAogYm9vbCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAo
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91
bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBvZmZz
ZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUp
OwotICAgICAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUs
IG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAob2Zm
c2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRVbmRl
ZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTU5LDI1
ICs1ODksMjIgQEAgU3RydWN0dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSgogICAg
IHJldHVybiBtX2luaGVyaXRvcklELmdldCgpOwogfQogCi1Qcm9wZXJ0eVN0b3JhZ2UgSlNPYmpl
Y3Q6Omdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qg
b2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCitQcm9wZXJ0eVN0b3JhZ2UgSlNPYmplY3Q6Omdyb3dP
dXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUs
IHNpemVfdCBuZXdTaXplKQogewogICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAg
ICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0
dXJlKCksIHNpbmNlCiAgICAgLy8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5z
aXRpb24uCiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9w
ZXJ0eVN0b3JhZ2UuZ2V0KCk7CisgICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFn
ZSA9IG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3UHJv
cGVydHlTdG9yYWdlID0gMDsKIAotICAgIGlmIChpc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7Cisg
ICAgaWYgKCFvbGRQcm9wZXJ0eVN0b3JhZ2UpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4
dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9z
ZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRl
bXAgPSBuZXdQcm9wZXJ0eVN0b3JhZ2U7CiAgICAgICAgIGlmICghZ2xvYmFsRGF0YS5oZWFwLnRy
eUFsbG9jYXRlU3RvcmFnZShzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikgKiBuZXdT
aXplLCAmdGVtcCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBuZXdQcm9wZXJ0eVN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpCi0gICAgICAgICAgICBuZXdQcm9w
ZXJ0eVN0b3JhZ2VbaV0gPSBvbGRQcm9wZXJ0eVN0b3JhZ2VbaV07CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGly
c3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9p
bnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CkBAIC01OTQs
OCArNjIxLDggQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAg
c2l6ZV90IG9mZnNldCA9IG9iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7Ci0gICAgaWYgKG9mZnNldCA9PSBX
VEY6Om5vdEZvdW5kKQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iamVjdC0+c3RydWN0
dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
Y2VsbCk7CisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKG9iamVjdC0+Z2V0RGlyZWN0T2Zm
c2V0KG9mZnNldCksIGF0dHJpYnV0ZXMpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OSwxOCArNzksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFjY2Vzc29yICAgICA9
IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIH07CiAKLSNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotI2RlZmluZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSA2Ci0jZWxzZQotI2RlZmluZSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0
eSA0Ci0jZW5kaWYKLQotQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFn
ZUNhcGFjaXR5ID49IDApLCBmaW5hbF9zdG9yYWdlX25vbl9uZWdhdGl2ZSk7CisgICAgY2xhc3Mg
SlNGaW5hbE9iamVjdDsKIAogICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRC
bG9jazsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCkBAIC0xNjksMjYgKzE2NCw3MiBAQCBDT01QSUxF
X0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIC8vIFRoaXMgZ2V0IGZ1
bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICAgICAgSlNWYWx1ZSBn
ZXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChv
ZmZzZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1
cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpT
VmFsdWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJl
dHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkg
OiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdl
dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zm
c2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7
CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJl
Y3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0Nl
bGwqIHNwZWNpZmljRnVuY3Rpb247Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8g
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAg
fQogCi0gICAgICAgIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkg
Y29uc3QgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKTsgfQorICAgICAg
ICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxDb25zdFByb3BlcnR5U3RvcmFn
ZT4odGhpcyArIDEpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVT
dG9yYWdlVW5zYWZlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIC0g
cHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb3Bl
cnR5U3RvcmFnZT4odGhpcyArIDEpOworICAgICAgICB9CisgICAgICAgIENvbnN0UHJvcGVydHlT
dG9yYWdlIGlubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoaGFzSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdl
VW5zYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaGFzSW5saW5lU3RvcmFnZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSBj
b25zdCB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAgUHJvcGVy
dHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSB7IHJldHVybiBtX291dE9mTGluZVN0b3JhZ2Uu
Z2V0KCk7IH0KKworICAgICAgICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2Nh
dGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCld
OworICAgICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlc3VsdDsKKyAgICAg
ICAgICAgIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UgPSBsb2NhdGlvbiAtIGlubGluZVN0
b3JhZ2VVbnNhZmUoKTsKKyAgICAgICAgICAgIGlmIChvZmZzZXRJbklubGluZVN0b3JhZ2UgPCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0aW9uIC0gb3V0T2ZMaW5lU3RvcmFnZSgpICsgZmly
c3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChyZXN1bHQsIHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKik7CkBAIC0yMDUsOSArMjQ2LDkgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcgogICAgICAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2Jh
bERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAg
ICAgIC8vIEZhc3QgYWNjZXNzIHRvIGtub3duIHByb3BlcnR5IG9mZnNldHMuCi0gICAgICAgIEpT
VmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIHByb3Bl
cnR5U3RvcmFnZSgpW29mZnNldF0uZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZz
ZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZhbHVl
KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVl
KTsgfQotICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQorICAgICAg
ICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9CisgICAgICAgIHZvaWQg
cHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldChn
bG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KKyAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERp
cmVjdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKQEAgLTIyOCwy
NCArMjY5LDE2IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAg
ICAgICAgYm9vbCBzdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkgeyByZXR1cm4gc3RydWN0dXJlKCkt
PnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsgfQogICAgICAgICB2b2lkIHJlaWZ5U3RhdGljRnVu
Y3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYyk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgUHJvcGVydHlTdG9yYWdlIGdyb3dQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwg
c2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1VzaW5nSW5s
aW5lU3RvcmFnZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0K
LSAgICAgICAgICAgICAgICAhbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkKLSAgICAgICAgICAgICAg
ICB8fCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09
IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0aGlzICsgMSk7Ci0gICAgICAgICAgICBBU1NFUlQo
cmVzdWx0ID09IHN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVN0
b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlTdG9yYWdlIGdyb3dPdXRPZkxpbmVTdG9yYWdl
KEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAg
IHZvaWQgc2V0T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2Us
IFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgYm9vbCByZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNz
YXJ5KEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqKTsKICAg
ICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHZvaWQqIGFkZHJlc3NPZlByb3Bl
cnR5U3RvcmFnZSgpCisgICAgICAgIHZvaWQqIGFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJm1fcHJvcGVydHlTdG9yYWdlOworICAgICAg
ICAgICAgcmV0dXJuICZtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAg
LTI2MSw3ICsyOTQsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9y
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCk7Ci0gICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKTsKKyAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKTsK
ICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkluaGVyaXRvcklEKCk7CiAKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTI3MSw3ICsz
MDQsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAg
IHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAg
ICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNFbXB0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051
bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJvdG90eXBlKCkpKTsKICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CkBAIC0yODcsNyArMzIw
LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgICAg
IC8vIFRvIGluc3RhbnRpYXRlIG9iamVjdHMgeW91IGxpa2VseSB3YW50IEpTRmluYWxPYmplY3Qs
IGJlbG93LgogICAgICAgICAvLyBUbyBjcmVhdGUgZGVyaXZlZCB0eXBlcyB5b3UgbGlrZWx5IHdh
bnQgSlNOb25GaW5hbE9iamVjdCwgYmVsb3cuCi0gICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAgICAg
SlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICB2
b2lkIHJlc2V0SW5oZXJpdG9ySUQoKQogICAgICAgICB7CkBAIC0zMDUsMTkgKzMzOCw2IEBAIENP
TVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgdm9pZCBpc09i
amVjdCgpOwogICAgICAgICB2b2lkIGlzU3RyaW5nKCk7CiAgICAgICAgIAotICAgICAgICBDb25z
dFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5U3RvcmFnZS5nZXQoKTsgfQotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9y
YWdlKCkgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLQotICAgICAgICBjb25z
dCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qgb2Zm
c2V0KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJnByb3BlcnR5U3RvcmFn
ZSgpW29mZnNldF07Ci0gICAgICAgIH0KLQotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gJnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF07Ci0gICAgICAgIH0KLQogICAg
ICAgICB0ZW1wbGF0ZTxQdXRNb2RlPgogICAgICAgICBib29sIHB1dERpcmVjdEludGVybmFsKEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJv
cGVydHlTbG90JiwgSlNDZWxsKik7CiAKQEAgLTMyNyw3ICszNDcsNyBAQCBDT01QSUxFX0FTU0VS
VCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZmlu
ZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAg
ICAgIFN0cnVjdHVyZSogY3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJik7CiAKLSAgICAg
ICAgU3RvcmFnZUJhcnJpZXIgbV9wcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgIFN0b3JhZ2VCYXJy
aWVyIG1fb3V0T2ZMaW5lU3RvcmFnZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9pbmhlcml0b3JJRDsKICAgICB9OwogCkBAIC0zNTMsMTQgKzM3MywxNCBAQCBDT01QSUxFX0FT
U0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCAwKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
CiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKLSAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0
dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgQVNTRVJUKCF0
aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoY2xhc3NJbmZvKCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTM4MSw2ICs0MDEsOCBA
QCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEZpbmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsK
ICAgICAgICAgfQogCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKwogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIHN0YXRpYyBib29sIGhh
c0lubGluZVN0b3JhZ2UoKQpAQCAtMzg4LDExICs0MTAsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbkNvbW1vbihTbG90
VmlzaXRvciYpOworICAgICAgICAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgQVNTRVJUKCEoT0JKRUNUX09GRlNFVE9G
KEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkgJSBzaXplb2YoZG91YmxlKSkpOwotICAg
ICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpID09IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAg
IEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9y
YWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT50b3Rh
bFN0b3JhZ2VDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSk7CiAgICAgICAgICAg
ICBBU1NFUlQoY2xhc3NJbmZvKCkpOwogICAgICAgICB9CiAKQEAgLTQwMCwxMyArNDI1LDEzIEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0
IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lu
bGluZVN0b3JhZ2UpCisgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0pTRmluYWxPYmplY3RfaW5s
aW5lU3RvcmFnZUNhcGFjaXR5XTsKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBt
X2lubGluZVN0b3JhZ2VbSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFldOwogICAgIH07CiAKIGlubGlu
ZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTQzMSw5ICs0NTYsOSBAQCBpbmxpbmUgc2l6ZV90IEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0CiAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Zp
bmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpOwogfQogCi1pbmxpbmUgc2l6ZV90IEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpCitpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKQogewotICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNP
YmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKTsKKyAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
T2JqZWN0LCBtX291dE9mTGluZVN0b3JhZ2UpOwogfQogCiBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0
OjpvZmZzZXRPZkluaGVyaXRvcklEKCkKQEAgLTQ3MSwxNCArNDk2LDE4IEBAIGlubGluZSBib29s
IEpTT2JqZWN0Ojppc0dsb2JhbFRoaXMoKSBjb24KICAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpID09IEdsb2JhbFRoaXNUeXBlOwogfQogCi1pbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoraW5saW5lIHZvaWQgSlNP
YmplY3Q6OnNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJU
KHN0b3JhZ2UpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwotICAgIEFTU0VSVCghc3RydWN0dXJl
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpCi0gICAgICAgICAgIHx8IChjbGFzc0luZm8oKSA9PSAm
SlNGaW5hbE9iamVjdDo6c19pbmZvICYmIHN0YXRpY19jYXN0PHZvaWQqPihzdG9yYWdlKSA9PSBz
dGF0aWNfY2FzdDx2b2lkKj4odGhpcyArIDEpKSk7CisgICAgaWYgKCFzdG9yYWdlKSB7CisgICAg
ICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKSk7CisgICAgfQogICAgIHNldFN0cnVjdHVyZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwotICAgIG1fcHJvcGVydHlTdG9yYWdlLnNldChnbG9iYWxEYXRh
LCB0aGlzLCBzdG9yYWdlKTsKKyAgICBtX291dE9mTGluZVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEs
IHRoaXMsIHN0b3JhZ2UpOwogfQogCiBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC01MTYsOSArNTQ1
LDkgQEAgaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVy
biBhc09iamVjdCh2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKLWlubGluZSBKU09iamVjdDo6SlNPYmpl
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCitpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0NlbGwo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgdGhpcywgaW5saW5lU3RvcmFnZSkKKyAgICAsIG1fb3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxE
YXRhLCB0aGlzLCAwKQogewogfQogCkBAIC01NDIsMTkgKzU3MSw2IEBAIGlubGluZSBTdHJ1Y3R1
cmUqIEpTT2JqZWN0Ojppbmhlcml0b3JJRCgKICAgICByZXR1cm4gY3JlYXRlSW5oZXJpdG9ySUQo
Z2xvYmFsRGF0YSk7CiB9CiAKLWlubGluZSBzaXplX3QgU3RydWN0dXJlOjppbmxpbmVTdG9yYWdl
Q2FwYWNpdHkoKSBjb25zdAotewotICAgIGlmIChjbGFzc0luZm8oKSA9PSAmSlNGaW5hbE9iamVj
dDo6c19pbmZvKQotICAgICAgICByZXR1cm4gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2Fw
YWNpdHk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBib29sIFN0cnVjdHVyZTo6aXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSBjb25zdAotewotICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID49IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICByZXR1cm4gcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsKLX0KLQogaW5saW5l
IGJvb2wgSlNDZWxsOjppbmhlcml0cyhjb25zdCBDbGFzc0luZm8qIGluZm8pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoaW5mbyk7CkBAIC02MTEsMTAgKzYy
NywxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvCiBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBVU3RyaW5nJiBuYW1lKQogewogICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5hbWUuaW1w
bCgpLT5oYXNIYXNoKCkKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBs
KCktPmhhc0hhc2goKQogICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKICAgICAgICAgICAgIDogc3RydWN0dXJl
KCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9
IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKICAg
ICAgICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KS0+Z2V0KCk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC02NzYsOCArNjkyLDgg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIGlmIChzdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJp
YnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAg
aWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50
QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICBpZiAob2Zmc2V0
ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGN1cnJlbnRs
eSBhIHNwZWNpZmljIGZ1bmN0aW9uLCBhbmQgdGhlcmUgbm93IGVpdGhlciBpc24ndCwKICAgICAg
ICAgICAgIC8vIG9yIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50LCB0aGVuIGRlc3BlY2lmeS4K
ICAgICAgICAgICAgIGlmIChjdXJyZW50U3BlY2lmaWNGdW5jdGlvbiAmJiAoc3BlY2lmaWNGdW5j
dGlvbiAhPSBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikpCkBAIC03MDAsMTMgKzcxNiwxNCBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIGlmICgobW9k
ZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNFeHRlbnNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0
b3JhZ2UoKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3Rv
cmFnZSgpKQotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVy
ZSgpLT5zdWdnZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICBQcm9wZXJ0
eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICAgICAgaWYgKHN0
cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFn
ZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAKLSAgICAgICAgQVNTRVJU
KG9mZnNldCA8IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAg
ICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5p
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3Bl
cnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKQEAgLTcxNCwx
NSArNzMxLDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldDsKLSAgICBzaXpl
X3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHNpemVfdCBjdXJyZW50Q2FwYWNp
dHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3Rv
cmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOyAKLSAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAh
PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBuZXdT
dG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHks
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0KLSAgICAgICAgQVNTRVJU
KG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAg
IHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsg
CisgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKQorICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGds
b2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KTsKKworICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9y
YWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB1dERpcmVj
dE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBh
IG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBj
dXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVu
Y2FjaGFibGUgc3RhdGUuCkBAIC03MzQsNyArNzUyLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAg
IEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7
CisgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgIGlmICgobW9kZSA9
PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NjgsNyArNzg2LDggQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlzLT5zdHJ1Y3R1cmUo
KSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwog
ICAgIAotICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpOworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRl
U3RvcmFnZUlmTmVjZXNzYXJ5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBwdXREaXJl
Y3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC03ODEsMjIgKzgwMCwyMiBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQogewotICAgIEFTU0VSVChvbGRDYXBhY2l0eSA8PSBuZXdTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgIEFTU0VSVChvbGRDYXBhY2l0eSA8PSBu
ZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgIAotICAgIGlmIChvbGRDYXBh
Y2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICBp
ZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAg
ICAgICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jv
d1Byb3BlcnR5U3RvcmFnZSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgb2xkQ2FwYWNpdHksIG5ld1N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgc2V0UHJvcGVydHlTdG9y
YWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CisgICAgUHJvcGVydHlT
dG9yYWdlIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSgKKyAgICAgICAgZ2xvYmFs
RGF0YSwgb2xkQ2FwYWNpdHksIG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Cisg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1
cmUpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQogewogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZO
ZWNlc3NhcnkoCi0gICAgICAgIGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIGJv
b2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKQEAgLTgyNCwxMSArODQzLDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoSlNHbG9iYWwKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCF2
YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7Ci0gICAg
UHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBpZiAo
c3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkpCi0gICAgICAgIG5ld1N0
b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlT
dG9yYWdlU2l6ZSgpKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9i
YWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgUHJvcGVydHlTdG9yYWdlIG5l
d1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRX
aWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKSkKKyAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dPdXRP
ZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2Fs
bGFibGVPYmplY3QodmFsdWUpKTsKKyAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEs
IG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKQEAgLTkwNiw4ICs5MjUsNiBAQCBpbmxpbmUgdm9pZCBK
U1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0CiAgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCkt
PnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKIH0KIAotLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIFJlZ2lzdGVyOjpmdW5jdGlvbigpIGNv
bnN0CiB7CiAgICAgaWYgKCFqc1ZhbHVlKCkpCkBAIC05MjIsNiArOTM5LDMyIEBAIEFMV0FZU19J
TkxJTkUgUmVnaXN0ZXIgUmVnaXN0ZXI6OndpdGhDYWwKICAgICByZXR1cm4gcjsKIH0KIAorLy8g
VGhpcyBpcyBhIGhlbHBlciBmb3IgcGF0Y2hpbmcgY29kZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0
IGEgbG9hZCBvciBzdG9yZSBhbmQKKy8vIHRoZSBiYXNlIGlzOgorLy8gRm9yIGlubGluZSBvZmZz
ZXRzOiBhIHBvaW50ZXIgdG8gdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UgcG9pbnRlci4KKy8vIEZv
ciBvdXQtb2YtbGluZSBvZmZzZXRzOiB0aGUgYmFzZSBvZiB0aGUgb3V0LW9mLWxpbmUgc3RvcmFn
ZS4KK2lubGluZSBzaXplX3Qgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uob2Zmc2V0KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpIC0gSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpICsgc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUg
aW50IGluZGV4UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlm
IChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgQVNTRVJUKCEoSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworICAgIHJldHVybiBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lubGluZSBpbnQgb2Zmc2V0UmVs
YXRpdmVUb0Jhc2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc091dE9mTGlu
ZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgIHJldHVybiBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KSAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gSlNPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciogSlNQcm9wZXJ0eU5hbWVJdAogICAgIHNpemVfdCBudW1DYWNoZWFibGVTbG90cyA9IDA7
CiAgICAgaWYgKCFvLT5zdHJ1Y3R1cmUoKS0+aGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoKSAm
JiAhby0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKQogICAgICAgICAm
JiAhby0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgJiYgIW8tPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKLSAgICAgICAg
bnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
OworICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT50b3RhbFN0b3Jh
Z2VTaXplKCk7CiAgICAgCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5h
bWVJdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3Bl
cnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7Ci0gICAganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCkpOworICAg
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFt
ZXMuZGF0YSgpLCBvKTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkp
CiAgICAgICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMiArNDcsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAogICAgICAgICBz
dGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
Kik7Ci0gICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwg
c2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IoZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBudW1DYWNoZWFibGVTbG90KTsKLSAgICAg
ICAgICAgIGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURh
dGEpOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwotICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAKQEAgLTYzLDExICs1NywxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGks
IGludCYgb2Zmc2V0KQorICAgICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwgUHJvcGVydHlP
ZmZzZXQmIG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGkgPj0gbV9udW1DYWNo
ZWFibGVTbG90cykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBv
ZmZzZXQgPSBpOworICAgICAgICAgICAgb2Zmc2V0ID0gaSArIG1fb2Zmc2V0QmFzZTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTg4LDEyICs4MiwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSkKKyAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0
YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
ICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3Bl
cnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9y
KCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsg
KytpKQogICAgICAgICAgICAgICAgIG1fanNTdHJpbmdzW2ldLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVydHlOYW1lVmVjdG9yW2ldLnVzdHJp
bmcoKSkpOworICAgICAgICAgICAgbV9vZmZzZXRCYXNlID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
Zmlyc3RWYWxpZE9mZnNldCgpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpAQCAtMTA1LDYg
KzEwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
Q2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIHVpbnQzMl90IG1fbnVtQ2Fj
aGVhYmxlU2xvdHM7CiAgICAgICAgIHVpbnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXRCYXNlOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJh
cnJpZXI8VW5rbm93bj4gPiBtX2pzU3RyaW5nczsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw4ICsxMzAsOCBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSog
CiAgICAgZm9yICg7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAh
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIGpzQWRkU2xvd0Nhc2UoY2FsbEZyYW1lLCB2MSwgdjIpOwog
ICAgIH0KIAotICAgIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIHNsb3RPZmZzZXQpCisgICAgaW5saW5lIHNp
emVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5T2Zmc2V0JiBzbG90T2Zmc2V0KQogICAgIHsKICAgICAgICAgSlNDZWxsKiBjZWxs
ID0gYmFzZS5hc0NlbGwoKTsKICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlTnVtYmVyT2ZHQ01h
cmtlcnMKICAgICByZXR1cm4gY3B1c1RvVXNlOwogfQogCi0KIE9wdGlvbnM6OkVudHJ5IE9wdGlv
bnM6OnNfb3B0aW9uc1tPcHRpb25zOjpudW1iZXJPZk9wdGlvbnNdOwogCiAvLyBSZWFsaXplIHRo
ZSBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgb3B0aW9uczoKQEAgLTExOSwxMSArMTE4LDExIEBAIGNv
bnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGkKIHZvaWQgT3B0aW9uczo6aW5p
dGlhbGl6ZSgpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBlYWNoIG9mIHRoZSBvcHRpb25zIHdpdGgg
dGhlaXIgZGVmYXVsdCB2YWx1ZXM6Ci0jZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFt
ZV8sIGRlZmF1bHRWYWx1ZV8pIFwKKyNkZWZpbmUgRk9SX0VBQ0hfT1BUSU9OKHR5cGVfLCBuYW1l
XywgZGVmYXVsdFZhbHVlXykgICAgXAogICAgIG5hbWVfKCkgPSBkZWZhdWx0VmFsdWVfOwogICAg
IEpTQ19PUFRJT05TKEZPUl9FQUNIX09QVElPTikKICN1bmRlZiBGT1JfRUFDSF9PUFRJT04KLQor
ICAgICAgICAKICAgICAvLyBBbGxvdyBlbnZpcm9ubWVudCB2YXJzIHRvIG92ZXJyaWRlIG9wdGlv
bnMgaWYgYXBwbGljYWJsZS4KICAgICAvLyBUaGUgZXZuIHZhciBzaG91bGQgYmUgdGhlIG5hbWUg
b2YgdGhlIG9wdGlvbiBwcmVmaXhlZCB3aXRoCiAgICAgLy8gIkpTQ18iLgpAQCAtMTMyLDkgKzEz
MSwxMiBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgIG92ZXJyaWRlT3B0aW9uV2l0
aEhldXJpc3RpYyhuYW1lXygpLCAiSlNDXyIgI25hbWVfKTsKICAgICBKU0NfT1BUSU9OUyhGT1Jf
RUFDSF9PUFRJT04pCiAjdW5kZWYgRk9SX0VBQ0hfT1BUSU9OCi0gICAgCiAjZW5kaWYgLy8gUlVO
X1RJTUVfSEVVUklTVElDUwogCisjaWYgMAorICAgIDsgLy8gRGVjb25mdXNlIGVkaXRvcnMgdGhh
dCBkbyBhdXRvIGluZGVudGF0aW9uCisjZW5kaWYKKyAgICAKICAgICAvLyBEbyByYW5nZSBjaGVj
a3Mgd2hlcmUgbmVlZGVkIGFuZCBtYWtlIGNvcnJlY3Rpb25zIHRvIHRoZSBvcHRpb25zOgogICAg
IEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpID49IHRocmVzaG9s
ZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSk7CiAgICAgQVNTRVJUKHRocmVzaG9sZEZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRh
YmxlLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAK
ICNpZm5kZWYgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogI2RlZmluZSBQcm9wZXJ0eU1hcEhhc2hU
YWJsZV9oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlVTdHJpbmcu
aCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+
CkBAIC03MiwxMSArNzMsMTEgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25l
ZCB2KQogCiBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSB7CiAgICAgU3RyaW5nSW1wbCoga2V5Owot
ICAgIHVuc2lnbmVkIG9mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBzcGVjaWZpY1ZhbHVl
OwogCi0gICAgUHJvcGVydHlNYXBFbnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2Vs
bCogb3duZXIsIFN0cmluZ0ltcGwqIGtleSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCisgICAgUHJvcGVydHlNYXBFbnRyeShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cmluZ0ltcGwqIGtleSwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpCiAgICAgICAgIDoga2V5KGtleSkKICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQogICAg
ICAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykKQEAgLTE3NCw4ICsxNzUsMTAgQEAgcHVibGlj
OgogICAgIC8vIFVzZWQgdG8gbWFpbnRhaW4gYSBsaXN0IG9mIHVudXNlZCBlbnRyaWVzIGluIHRo
ZSBwcm9wZXJ0eSBzdG9yYWdlLgogICAgIHZvaWQgY2xlYXJEZWxldGVkT2Zmc2V0cygpOwogICAg
IGJvb2wgaGFzRGVsZXRlZE9mZnNldCgpOwotICAgIHVuc2lnbmVkIGdldERlbGV0ZWRPZmZzZXQo
KTsKLSAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9m
ZnNldChKU1R5cGUgdHlwZSk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5z
dXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KICAgICBQ
YXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHkoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25l
ciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOwpAQCAtMjMwLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQqIG1faW5kZXg7CiAgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKICAgICB1bnNp
Z25lZCBtX2RlbGV0ZWRDb3VudDsKLSAgICBPd25QdHI8IFZlY3Rvcjx1bnNpZ25lZD4gPiBtX2Rl
bGV0ZWRPZmZzZXRzOworICAgIE93blB0cjwgVmVjdG9yPFByb3BlcnR5T2Zmc2V0PiA+IG1fZGVs
ZXRlZE9mZnNldHM7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWluaW11bVRhYmxlU2l6
ZSA9IDE2OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbXB0eUVudHJ5SW5kZXggPSAwOwpA
QCAtMjY0LDkgKzI2Nyw5IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpT
R2wKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAg
ICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRP
ZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxl
dGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0
b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CisgICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0ds
b2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0
IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMjg4LDkgKzI5MSw5IEBAIGlubGluZSBQcm9wZXJ0
eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2wKICAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2Rl
bGV0ZWRPZmZzZXRzIHZlY3Rvci4KLSAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRP
ZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKKyAgICBWZWN0b3I8UHJvcGVy
dHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5n
ZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zm
c2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRz
KSk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCiBpbmxpbmUgUHJvcGVydHlU
YWJsZTo6flByb3BlcnR5VGFibGUoKQpAQCAtNDY5LDIwICs0NzIsMzEgQEAgaW5saW5lIGJvb2wg
UHJvcGVydHlUYWJsZTo6aGFzRGVsZXRlZE9mZgogICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRz
ICYmICFtX2RlbGV0ZWRPZmZzZXRzLT5pc0VtcHR5KCk7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBQ
cm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQ
cm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIHsKLSAgICB1bnNpZ25lZCBvZmZzZXQg
PSBtX2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
bV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92ZUxh
c3QoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxl
OjphZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKK2lubGluZSB2b2lkIFByb3BlcnR5
VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlm
ICghbV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8dW5zaWduZWQ+KTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5h
cHBlbmQob2Zmc2V0KTsKIH0KIAoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6
Om5leHRPZmZzZXQoSlNUeXBlIHR5cGUpCit7CisgICAgaWYgKGhhc0RlbGV0ZWRPZmZzZXQoKSkK
KyAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICAKKyAgICBpZiAodHlwZSA9
PSBGaW5hbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBzaXplKCk7CisgICAgCisgICAgcmV0
dXJuIHNpemUoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCiBpbmxpbmUgUGFzc093blB0
cjxQcm9wZXJ0eVRhYmxlPiBQcm9wZXJ0eVRhYmxlOjpjb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpCiB7CiAgICAgQVNTRVJU
KG5ld0NhcGFjaXR5ID49IG1fa2V5Q291bnQpOwpAQCAtNDk5LDcgKzUxMyw3IEBAIGlubGluZSBz
aXplX3QgUHJvcGVydHlUYWJsZTo6c2l6ZUluTWVtb3IKIHsKICAgICBzaXplX3QgcmVzdWx0ID0g
c2l6ZW9mKFByb3BlcnR5VGFibGUpICsgZGF0YVNpemUoKTsKICAgICBpZiAobV9kZWxldGVkT2Zm
c2V0cykKLSAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICog
c2l6ZW9mKHVuc2lnbmVkKSk7CisgICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+
Y2FwYWNpdHkoKSAqIHNpemVvZihQcm9wZXJ0eU9mZnNldCkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlPZmZzZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvcGVy
dHlPZmZzZXRfaAorI2RlZmluZSBQcm9wZXJ0eU9mZnNldF9oCisKKyNpbmNsdWRlICJKU1R5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNgor
I2Vsc2UKKyNkZWZpbmUgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNAorI2VuZGlmCisKK3R5cGVk
ZWYgaW50IFByb3BlcnR5T2Zmc2V0OworCitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52
YWxpZE9mZnNldCA9IC0xOworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGlubGluZVN0b3Jh
Z2VDYXBhY2l0eSA9IElOTElORV9TVE9SQUdFX0NBUEFDSVRZOworc3RhdGljIGNvbnN0IFByb3Bl
cnR5T2Zmc2V0IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ID0gaW5saW5lU3RvcmFnZUNhcGFjaXR5Owor
CisvLyBEZWNsYXJlIGFsbCBvZiB0aGUgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSB0ZW5kIHRvIGRv
IGZvcndhcmQgY2FsbHMuCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpOworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBK
U1R5cGUgdHlwZSk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpOworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBKU1R5cGUgdHlwZSk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCk7CitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpOworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KTsKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCk7CitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9yYWdlKFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xv
dHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCk7CitpbmxpbmUgc2l6ZV90IG51
bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5
cGUpOworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKTsKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJz
dFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKTsKKworaW5saW5lIHZvaWQgY2hlY2tPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwor
ICAgIEFTU0VSVChvZmZzZXQgPj0gaW52YWxpZE9mZnNldCk7Cit9CisKK2lubGluZSB2b2lkIGNo
ZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIEFTU0VSVChv
ZmZzZXQgPj0gaW52YWxpZE9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA9PSBpbnZhbGlkT2Zm
c2V0CisgICAgICAgICAgIHx8IHR5cGUgPT0gRmluYWxPYmplY3RUeXBlCisgICAgICAgICAgIHx8
IGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsK
KyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFs
aWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBj
aGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpOworfQorCitpbmxpbmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgIT0gaW52
YWxpZE9mZnNldDsKK30KKworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNl
dCA8IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKK30KKworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVP
ZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7
CisgICAgcmV0dXJuICFpc0lubGluZU9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90
IG9mZnNldEluSW5saW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFs
aWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSk7
CisgICAgcmV0dXJuIG9mZnNldDsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9m
ZnNldCk7CisgICAgQVNTRVJUKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVy
biBvZmZzZXQgLSBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKworaW5saW5lIHNpemVfdCBvZmZz
ZXRJblJlc3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluSW5saW5lU3Rv
cmFnZShvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0
KTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAg
ICBpZiAob2Zmc2V0IDwgZmlyc3RPdXRPZkxpbmVPZmZzZXQpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBvZmZzZXQgLSBmaXJzdE91dE9mTGluZU9mZnNldCArIDE7Cit9CisKK2lubGlu
ZSBzaXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGlm
ICh0eXBlID09IEZpbmFsT2JqZWN0VHlwZSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIDE7Cisg
ICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG9mZnNldCk7Cit9
CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQsIHR5
cGUpOworICAgIGlmICh0eXBlICE9IEZpbmFsT2JqZWN0VHlwZSAmJiBvZmZzZXQgPT0gaW52YWxp
ZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgIHJldHVy
biBvZmZzZXQgKyAxOworfQorCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9m
ZnNldEZvcihKU1R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gbmV4dFByb3BlcnR5T2Zmc2V0Rm9y
KGludmFsaWRPZmZzZXQsIHR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIFByb3BlcnR5T2Zmc2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
Myw3IEBACiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgi
CisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC04
OSw3ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUg
Y2FjaGVkUHJvcGVydHlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGU7
IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJv
cGVydHlUeXBlICE9IFVuY2FjaGVhYmxlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGVWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlID09IFZhbHVlOyB9Ci0gICAg
ICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNo
ZWFibGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CkBAIC0xMDQsNyArMTA1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwgSlNW
YWx1ZSB2YWx1ZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVl
IHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0g
SlNDX1ZBTFVFX01BUktFUjsKQEAgLTE2MCw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIG1fZGF0YS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09i
amVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldENhY2hl
YWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdldHRl
ckZ1bmMpOwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEdFVFRFUl9GVU5DVElPTl9NQVJLRVI7
CkBAIC0yMDYsNyArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIENsZWFyIG9mZnNldCBldmVuIGluIHJlbGVhc2UgYnVpbGRzLCBpbiBjYXNlIHRoaXMg
UHJvcGVydHlTbG90IGhhcyBiZWVuIHVzZWQgYmVmb3JlLgogICAgICAgICAgICAgLy8gKEZvciBv
dGhlciBkYXRhIG1lbWJlcnMsIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIgYW55dGhpbmcgYmVjYXVz
ZSByZXVzZSB3b3VsZCBtZWFuaW5nZnVsbHkgb3ZlcndyaXRlIHRoZW0uKQotICAgICAgICAgICAg
bV9vZmZzZXQgPSAwOworICAgICAgICAgICAgbV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAg
ICAgICAgICAgbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPSBVbmNhY2hlYWJsZTsKICAgICAgICAgfQog
CkBAIC0yMzIsNyArMjMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV92
YWx1ZTsKICAgICAgICAgSlNWYWx1ZSBtX3RoaXNWYWx1ZTsKIAotICAgICAgICBzaXplX3QgbV9v
ZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgICAgICBDYWNoZWRQ
cm9wZXJ0eVR5cGUgbV9jYWNoZWRQcm9wZXJ0eVR5cGU7CiAgICAgfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHJldmlzaW9u
IDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xv
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShK
U09iamVjdCogYmFzZSwgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1By
b3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1fdHlwZSA9IEV4aXN0aW5nUHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jh
c2UgPSBiYXNlOwogICAgICAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0
KQorICAgICAgICB2b2lkIHNldE5ld1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5
OwogICAgICAgICAgICAgbV9iYXNlID0gYmFzZTsKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlICE9IFVuY2FjaGFibGU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNv
bnN0IHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QgewogICAg
ICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb2Zm
c2V0OwogICAgICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgICAgICBKU09iamVjdCogbV9iYXNlOwot
ICAgICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
OwogICAgICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTIxODA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU2LDggKzE1Niw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSkK
ICAgICAsIG1fY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9p
bnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkodHlwZUluZm8uaXNGaW5hbE9iamVjdCgpID8gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdl
Q2FwYWNpdHkgOiAwKQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGlu
ZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0
aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlU
YWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAg
LTE3OSw4ICsxNzksOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
CiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBqc051bGwoKSkKICAgICAsIG1f
Y2xhc3NJbmZvKCZzX2luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRp
YWxpemVkV2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KDApCi0gICAg
LCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAs
IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0
aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwg
bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMjAwLDggKzIwMCw4IEBAIFN0
cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBl
KGdsb2JhbERhdGEsIHRoaXMsIHByZXZpb3VzLT5zdG9yZWRQcm90b3R5cGUoKSkKICAgICAsIG1f
Y2xhc3NJbmZvKHByZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNo
cG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkocHJldmlvdXMtPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpCi0gICAgLCBtX29mZnNl
dChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkocHJldmlvdXMtPm1fb3V0T2ZM
aW5lQ2FwYWNpdHkpCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0
aW9uYXJ5S2luZChwcmV2aW91cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQ
cm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHBy
ZXZpb3VzLT5tX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMpCkBAIC0yMzksNyArMjM5LDcgQEAg
dm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCghc3Ry
dWN0dXJlLT5tX3ByZXZpb3VzKTsKIAotICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3Ry
dWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbV9vZmZzZXQgKyAx
KTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRh
YmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5
TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgY3JlYXRl
UHJvcGVydHlNYXAobV9vZmZzZXQgKyAxKTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAK
ICAgICBmb3IgKHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0t
aSkgewogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMjU2LDIxICsyNTYs
MjEgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIH0K
IAotaW5saW5lIHNpemVfdCBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1cnJl
bnRDYXBhY2l0eSkKK2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShz
aXplX3QgY3VycmVudENhcGFjaXR5KQogewogICAgIGlmICghY3VycmVudENhcGFjaXR5KQogICAg
ICAgICByZXR1cm4gNDsKICAgICByZXR1cm4gY3VycmVudENhcGFjaXR5ICogMjsKIH0KIAotdm9p
ZCBTdHJ1Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCit2b2lkIFN0cnVjdHVy
ZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KCkKIHsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5ID0gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkpOworICAgIG1fb3V0T2ZMaW5lQ2FwYWNpdHkgPSBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFj
aXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0
ZWROZXdQcm9wZXJ0eVN0b3JhZ2VTaXplKCkKK3NpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpCiB7Ci0gICAgcmV0dXJuIG5leHRQcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gbmV4
dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShtX291dE9mTGluZUNhcGFjaXR5KTsKIH0KICAKIHZv
aWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMjg3LDcgKzI4Nyw3IEBA
IHZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3Bl
Y2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgp
KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGlu
Z1RyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlm
IChzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBz
cGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChleGlz
dGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKKyAgICAgICAgdmFsaWRhdGVP
ZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldCwgc3RydWN0dXJlLT5tX3R5cGVJbmZv
LnR5cGUoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7
CiAgICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMw
NCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1
cm4gMDsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2
ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0
aGVyZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJv
cGVydHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRy
YW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAg
ICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5z
aXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRy
YW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5n
cm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAg
fQogICAgIApAQCAtMzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNp
ZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKTsKLSAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNp
dGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jv
d1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGlu
ZVNpemUoKSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5z
aXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZz
ZXQgPSBvZmZzZXQ7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFs
RGF0YSwgdHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVy
ZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
c2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAg
QVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgs
MTggKzU0OCwxOSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAK
ICAgICAgICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsK
ICAgICAgICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0
T2Zmc2V0ID0gZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAg
ICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7
CiAgICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlU
YWJsZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2
YWx1ZXNbaV0gPSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAg
ICAgICAgLy8gVXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBv
ZmZzZXRzCi0gICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+
b2Zmc2V0ID0gaSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBDb3B5IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2Nh
dGlvbnMKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkr
KykKLSAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZh
bHVlc1tpXSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRh
LCBmaXJzdE9mZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxl
LT5jbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0K
IAotc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAg
LTU3OSwxMyArNTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRy
YW4KICAgICAKICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1Zh
bHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7
Ci0gICAgaWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpCi0gICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4g
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAg
ICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAg
ICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNl
dDsKKyAgICByZXR1cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJl
OjpwaW4oKQpAQCAtNjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBT
dHJ1Y3R1cmU6OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29w
eVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBvd25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3
IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3
IFByb3BlcnR5VGFibGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAg
ICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xv
YmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSkpOwog
fQogCi1zaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3Bl
Y2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0
ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKSA9PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAg
ICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVy
dHlOYW1lLnVpZCgpKS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQotICAgICAgICByZXR1cm4gV1RG
Ojpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBhdHRyaWJ1
dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7CiAgICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVj
aWZpY1ZhbHVlLmdldCgpOwpAQCAtNjg1LDkgKzY4NSw5IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNw
ZWNpZnlBbGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZS5jbGVhcigp
OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpwdXRT
cGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewot
ICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBub3RGb3VuZCk7Cisg
ICAgQVNTRVJUKCFKU0M6OmlzVmFsaWRPZmZzZXQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSkpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERv
bnRFbnVtKQpAQCAtNjk4LDEyICs2OTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZp
Y1ZhbHVlKEpTR2xvCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVBy
b3BlcnR5TWFwKCk7CiAKLSAgICB1bnNpZ25lZCBuZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9w
ZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCi0gICAgICAgIG5ld09mZnNldCA9IG1fcHJv
cGVydHlUYWJsZS0+Z2V0RGVsZXRlZE9mZnNldCgpOwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zm
c2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zm
c2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAog
ICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhp
cywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzEx
LDcgKzcwNiw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAg
ICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBA
IC03MjQsNyArNzE5LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBw
cgogICAgIGlmICghcG9zaXRpb24uZmlyc3QpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAot
ICAgIHNpemVfdCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OworICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5
VGFibGUtPnJlbW92ZShwb3NpdGlvbik7CiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGREZWxldGVk
T2Zmc2V0KG9mZnNldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygp
OwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3Bl
cnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNl
dCk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYgb2Zm
c2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlP
ZmZzZXQmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0JiBvZmZzZXQpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJp
YnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAgLTEwMywzMiArMTAzLDMyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBi
b29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9
CiAgICAgICAgIGJvb2wgZGlkVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNp
dGlvbjsgfQotICAgICAgICBib29sIHB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkKKyAgICAg
ICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VT
aXplKCkpOworICAgICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZM
aW5lU2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFi
bGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX29mZnNldCArIDEpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY3VycmVudFNpemUgPT0gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNp
dHkoKSA+PSBjdXJyZW50U2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaXpl
ID09IG91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlU
YWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0
b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
KTsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6
ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSBwcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNh
cGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOworICAgICAgICAgICAgcmV0dXJu
IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCk7CiAgICAg
ICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3Bl
cnR5U3RvcmFnZVNpemUoKTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCiAKICAgICAgICAgU3RydWN0dXJl
KiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwog
CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhl
c2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsK
LSAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlP
ZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7
IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFy
eUtpbmQgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBAIC0xNDksMTggKzE0OSwxMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVj
U3RhdGUqKSBjb25zdDsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0
IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1f
cHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9
PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgpOworICAgICAg
ICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAgICAgdm9pZCBncm93UHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25z
dCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBt
X3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3Rv
cmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNf
aW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0
eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0K
LSAgICAgICAgc2l6ZV90IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0OwotICAgICAgICBi
b29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90IGdldChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
aXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0
ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICB2b2lkIGdyb3dPdXRPZkxpbmVD
YXBhY2l0eSgpOworICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0g
JnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eTsKKyAgICAg
ICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9
PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgewor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJv
cGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxh
c3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGlu
ZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAg
ICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBudW1i
ZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAg
ICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAg
ICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90
YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSB0aGlzLT5pbmxpbmVDYXBhY2l0eSgp
OworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVDYXBhY2l0eSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6
ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51
bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQor
ICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlOworICAgICAg
ICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0gRmlu
YWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdDsKKyAgICAgICAgICAg
IGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0
eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgaWYgKHJlc3VsdCA+
IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3Rv
cmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAg
ICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAg
fQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1
cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgp
KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSAr
IGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBm
aXJzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lu
bGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHNpemUg
PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgLSAxOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgICAgICB9Cisg
ICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgp
CisgICAgICAgICAgICAgICAgJiYgb2Zmc2V0IDw9IGxhc3RWYWxpZE9mZnNldCgpOworICAgICAg
ICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5
TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBV
U3RyaW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQg
Z2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQog
ICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlU
YWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7Cisg
ICAgICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAg
IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2Fi
bGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENv
dW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzc0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1Zh
bHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUp
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAg
ICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAg
ICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICs0MDIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRo
ZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5
IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZz
ZXQgPyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNG
b3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFBy
b3RvdHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICs0MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCA9IDY0Owog
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZzZXQgPSAtMTsKLQogICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKIAog
ICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAtMzM2LDEwICs0MzUsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQg
bV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKIAotICAgICAgICB1aW50MzJfdCBtX3Byb3BlcnR5
U3RvcmFnZUNhcGFjaXR5OworICAgICAgICB1aW50MzJfdCBtX291dE9mTGluZUNhcGFjaXR5Owog
CiAgICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFjY291bnQgZm9yIGFub255bW91cyBzbG90
cwotICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
OwogCiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgICAgICBib29s
IG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAgLTM1MywyNiArNDUyLDI2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAg
ICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5
T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAg
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNl
dDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+
ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBl
bnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5v
ZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0
dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQor
ICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0
eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJu
IGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3By
b3BlcnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJzdDsKLSAgICAgICAg
cmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4g
ZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAgICAgCiAgICAg
aW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150736</attachid>
            <date>2012-07-04 01:14:32 -0700</date>
            <delta_ts>2012-07-04 12:58:23 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_16.diff</filename>
            <type>text/plain</type>
            <size>259484</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzOSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNz
ZW1ibGVyLmg6CisgICAgICAgIChBUk12N0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpsZHJXaWRlOEJpdEltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkFSTXY3QXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6
cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToK
KyAgICAgICAgKENvbnZlcnRpYmxlTG9hZExhYmVsKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWw6OkNvbnZlcnRpYmxlTG9hZExhYmVs
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2Fk
TGFiZWw6OmlzU2V0KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6bGFi
ZWxJZ25vcmluZ1dhdGNocG9pbnRzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24pOgorICAgICAgICAqIGFzc2VtYmxl
ci9Db2RlTG9jYXRpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChDb2RlTG9jYXRpb25D
b21tb24pOgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkOjpDb2RlTG9jYXRpb25Db252ZXJ0aWJs
ZUxvYWQpOgorICAgICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9h
ZEF0T2Zmc2V0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKExpbmtCdWZmZXIpOgorICAgICAg
ICAoSlNDOjpMaW5rQnVmZmVyOjpsb2NhdGlvbk9mKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Ojpjb252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJs
ZXJYODYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydGlibGVMb2FkUHRyKToKKyAg
ICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2XzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oOgorICAgICAgICAoUmVwYXRjaEJ1ZmZlcik6CisgICAgICAgIChKU0M6OlJlcGF0
Y2hCdWZmZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6
OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1
ZmZlcjo6c2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUpOgorICAgICAgICAqIGFzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aExv
YWQpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEdldEJ5SWRPcCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKToKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVz
KToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKEdldEJ5
SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OlB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpvZmZzZXQpOgor
ICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmg6CisgICAg
ICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OlJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpvZmZzZXQpOgorICAgICAgICAoUmVzb2x2
ZUdsb2JhbFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0Lmg6CisgICAg
ICAgIChTdHJ1Y3R1cmVTZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEJ5dGVD
b2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNv
bXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21w
aWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OlByb3BlcnR5QWNjZXNzUmVjb3JkOjpQcm9wZXJ0
eUFjY2Vzc1JlY29yZCk6CisgICAgICAgIChQcm9wZXJ0eUFjY2Vzc1JlY29yZCk6CisgICAgICAg
ICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1JlcGF0Y2hCeUlk
U2VsZkFjY2Vzcyk6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNz
U3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWls
ZEdldEJ5SURQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRSZXBsYWNlU3R1
Yik6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKToKKyAgICAgICAg
KEpTQzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUJ1aWxk
UHV0QnlJZExpc3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAv
TWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRv
U3R1YkluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlT
dHViQ29tcGlsYXRpb25JbmZvOjpQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8pOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXRCeUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZENoYWluTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpJVCk6CisgICAgICAg
ICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbCk6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2Jh
bCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X21ldGhvZF9jaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRC
eUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21ldGhvZF9jaGVjayk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVB1dERpcmVj
dE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OkpJVDo6cGF0Y2hHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0
Y2hQdXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZM
aXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZ1bmN0aW9uTmFtZU9mZnNldCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGly
ZWN0TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5saW5lU3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlVW5zYWZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmlubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb2NhdGlvbkZvck9m
ZnNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRGb3JMb2NhdGlvbik6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFkZHJlc3NPZk91
dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpKU09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZh
c3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRl
U3RvcmFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6b2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6aW5kZXhSZWxhdGl2ZVRvQmFzZSk6CisgICAgICAgIChK
U0M6Om9mZnNldFJlbGF0aXZlVG9CYXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmdldE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6Om5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1h
cEhhc2hUYWJsZS5oOgorICAgICAgICAoUHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TWFwRW50cnk6OlByb3BlcnR5TWFwRW50cnkpOgorICAgICAgICAoUHJvcGVydHlU
YWJsZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5VGFibGU6Om5leHRPZmZzZXQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlUYWJsZTo6c2l6ZUluTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5T2Zm
c2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Y2hlY2tPZmZzZXQp
OgorICAgICAgICAoSlNDOjp2YWxpZGF0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmlzVmFsaWRP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc0lubGluZU9mZnNldCk6CisgICAgICAgIChKU0M6Omlz
T3V0T2ZMaW5lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
b2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpuZXh0UHJvcGVydHlPZmZzZXRGb3IpOgorICAgICAg
ICAoSlNDOjpmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUdldHRlclNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVNsb3Q6OmNsZWFyT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5o
OgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldEV4aXN0aW5nUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OnNldE5ld1Byb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6UHV0UHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoUHV0UHJvcGVy
dHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6bmV4dE91dE9mTGluZVN0b3JhZ2VDYXBh
Y2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z3Jvd091dE9mTGluZUNhcGFjaXR5KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGVGb3JQ
aW5uaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKFN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2aW91c0lEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Om91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJ
bmxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGluZVNpemUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnRvdGFsU3RvcmFnZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRv
dGFsU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmaXJzdFZhbGlk
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpsYXN0VmFsaWRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25Db3Vu
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KToKKwogMjAxMi0wNy0wMyAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmg6IEhhc2ggQ29uc3Qg
SlNTdHJpbmcgaW4gQmFja2luZyBTdG9yZXMgdG8gU2F2ZSBNZW1vcnkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpA
QCAtNTgyLDYgKzU4Miw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90ZWN0Lmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkx
QTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rp
c2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGRjQyNzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZF
MTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZG
NDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRD
QjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3Bl
cnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQx
MDA0MUEyNEUgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAq
LzsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkw
MDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBS
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9w
ZXJ0eU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9m
ZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0
MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdDRkFQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdDRkFQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0
aCA9IGRmZy9ERkdDRkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEw
Nyw2ICsyMTA5LDcgQEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlO
YW1lLmggKi8sCiAJCQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFy
cmF5LmNwcCAqLywKIAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1l
QXJyYXkuaCAqLywKKwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZz
ZXQuaCAqLywKIAkJCQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNw
cCAqLywKIAkJCQk2NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8s
CiAJCQkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEs
NiArMjgxNCw3IEBACiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJl
c29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUw
MDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0x
MihPUF9MRFJfaW1tX1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0
LCBSZWdpc3RlcklEIHJuLCB1aW50OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9w
MTJSZWc0UmVnNEltbTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIz
LDQ2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9u
U3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4
RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFd
ICYgMHhGMDAwKSk7CisgICAgICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAg
cHRyWzBdIHw9IE9QX0xEUl9pbW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAm
IDB4MEYwMCkgPDwgNDsKKyAgICAgICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3Qp
ICogMik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0
YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1
aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3Rh
cnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9Q
X0xEUl9pbW1fVDM6CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAg
ICAgICAgICAgIHB0clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQURE
X2ltbV9UMzsKKyAgICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0Owor
ICAgICAgICAgICAgcHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE9QX0FERF9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAg
IGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5z
aWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjk1LDYgKzI5NSwzNiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAg
QXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxl
TG9hZExhYmVsOgorICAgIC8vCisgICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRz
IGEgbG9hZFB0ciBpbnN0cnVjdGlvbiB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgor
ICAgIC8vIHNvIHRoYXQ6CisgICAgLy8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIp
CisgICAgLy8KKyAgICAvLyBiZWNvbWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJ
bW1QdHIoaSksIGEsIGIpCisgICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBj
bGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1
ZmZlcjsKKyAgICAgICAgCisgICAgcHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJl
bCgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVM
b2FkTGFiZWwoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAg
ICAgICAgICAgIDogbV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hw
b2ludHMoKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVs
UHRyOgogICAgIC8vCkBAIC01NjIsNiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0
Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpCisgICAgeworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5k
aWYKICAgICAKICAgICBMYWJlbCBsYWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3Rl
ZDoKICAgICB7CiAgICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRh
TGFiZWxQdHIuZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsK
KyAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlv
bigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29t
cHV0YXRpb24oQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0
YUxvY2F0aW9uKCkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5l
YXJDYWxsOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVM
b2NhdGlvbkRhdGFMYWJlbDMyOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xh
c3MgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0
eXBlcyBhcmUgYWxsIHByZXR0eSBtdWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBD
b2RlUHRyIChvciBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFt
ZSkuICBUaGVzZQpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIGRhdGFMYWJlbFB0ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2Nh
dGlvbkRhdGFMYWJlbDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9m
ZnNldCk7CisgICAgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0
T2Zmc2V0KGludCBvZmZzZXQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9u
KCkKQEAgLTE0Niw2ICsxNDgsMTUgQEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNv
bW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7Citw
dWJsaWM6CisgICAgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGlj
aXQgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2Nh
dGlvbikKKyAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4
cGxpY2l0IENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkg
eyB9Cit9OworCiBpbmxpbmUgQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29t
bW9uOjppbnN0cnVjdGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElE
X0NPREVfT0ZGU0VUKG9mZnNldCk7CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9j
YXRpb25EYXRhTGFiZWxDb21wYWN0IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxh
YmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZz
ZXQpOwogfQogCitpbmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlv
bkNvbW1vbjo6Y29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NF
UlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9m
ZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VN
QkxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5r
QnVmZmVyOjpDb2RlUmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygi
ICAgIENvZGUgYXQgWyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCksIHN0YXRpY19jYXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
ICsgcmVzdWx0LnNpemUoKSk7CiAgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2Rl
KCksIG1fc2l6ZSwgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIg
ICAgICAgIDxubyBkaXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAg
ICAgICAgPG5vIGRpc2Fzc2VtYmx5IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3Mg
TGlua0J1ZmZlciB7CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFj
dCBEYXRhTGFiZWxDb21wYWN0OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bDMyIERhdGFMYWJlbDMyOwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0
ciBEYXRhTGFiZWxQdHI7CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVM
b2FkTGFiZWwgQ29udmVydGlibGVMb2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNU
SU9OKQogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsK
ICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpA
QCAtMTgwLDYgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25E
YXRhTGFiZWxDb21wYWN0KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwg
YXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQgbG9jYXRpb25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3Nl
bWJsZXI6OmdldExpbmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVs
KSkpOworICAgIH0KKwogICAgIC8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRy
ZXNzIG9mIHRoZSBjYWxsLCBnaXZlbiBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFy
dCBvZiB0aGUgY29kZS4KICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2Fs
bCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAt
NjAwLDYgKzYwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRy
ZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7
CiAgICAgfQorICAgIAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0
cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZl
cnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zm
c2V0ID49MCAmJiBhZGRyZXNzLm9mZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJXaWRlOEJpdEltbWVkaWF0ZShkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2
aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAg
Q29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVz
dWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFk
ZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
c2RfbXIoYWRkcmVzcy5tX3B0ciwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAx
MjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRl
c3QpOwogICAgIH0KIAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0
cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZl
cnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRl
c3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIyLDYgKzEyMiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2Fs
bGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxl
ZUZ1bmN0aW9uKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBsYWNlV2l0aExvYWQobGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxh
Y2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJl
bCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21w
dXRhdGlvbihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9u
SXNBY3RpdmUoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZl
KQorICAgIHsKKyAgICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhM
b2FkKGxhYmVsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24obGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50
OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsK
KyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisg
ICAgICAgICAgICBwdHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAg
ICAgY2FzZSBPUF9NT1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9Q
X0xFQToKKyAgICAgICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4
X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOwor
I2lmIENQVShYODZfNjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAg
ICAgICAgICAgIHB0cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAg
ICBjYXNlIE9QX01PVl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQo
QXNzZW1ibGVyTGFiZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAg
ICAgICBvcCA9ICJnZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3Ag
PSAiZ2V0X2J5X2lkX3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2Vs
ZjoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkX2NoYWluOgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfcmVwbGFjZTogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwx
MCArMTA3OSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAg
IHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXTsKICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
VW5saW5raW5nKQpAQCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYg
KEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAg
ICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0
cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVk
OwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAg
ICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdu
b3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNp
bXBsZSwgZmFsc2UsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFs
dWUpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFp
bihHZXRCCiAgICAgICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUt
PmdldCgKICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJp
YnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09
IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3Ry
dWN0dXJlKTsKQEAgLTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
CiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmli
dXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3Vs
dC5tX29mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1
bHQubV9vZmZzZXQpKSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShz
cGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5t
X29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1f
b2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKLSAgICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAor
ICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAg
ICAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmli
dXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobXlPZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNl
dChteU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3Vu
ZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTYs
NyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQp
CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTIyMywxMSArMjIzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpOworICAgICAgICBBU1NFUlQoIWlzVmFsaWRP
ZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAg
ICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgaWYgKCFpc1ZhbGlkT2Zm
c2V0KHJlc3VsdC5tX29mZnNldCkpIHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Ns
b3dQYXRoOwogICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKICAgICAgICAg
cmVzdWx0Lm1fY2hhaW4uY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBHZXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgR2V0QnlJZFN0
YXR1c19oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZVNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCkBAIC00NiwxMyArNDcsMTMgQEAg
cHVibGljOgogCiAgICAgR2V0QnlJZFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0luZm9y
bWF0aW9uKQotICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKICAgICBHZXRCeUlkU3RhdHVzKAog
ICAgICAgICBTdGF0ZSBzdGF0ZSwgYm9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNl
dCYgc3RydWN0dXJlU2V0ID0gU3RydWN0dXJlU2V0KCksCi0gICAgICAgIHNpemVfdCBvZmZzZXQg
PSBub3RGb3VuZCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3Ry
dWN0dXJlKj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKKyAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IGludmFsaWRPZmZzZXQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwg
VmVjdG9yPFN0cnVjdHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCiAgICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQp
CiAgICAgICAgICwgbV9jaGFpbihjaGFpbikKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1
Y3R1cmVTZXQ7IH0KICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFpbjsgfSAvLyBSZXR1cm5zIGVtcHR5IHZlY3RvciBpZiB0aGlzIGlzIGEg
ZGlyZWN0IGFjY2Vzcy4KICAgICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3NwZWNpZmljVmFsdWU7IH0gLy8gUmV0dXJucyBKU1ZhbHVlKCkgaWYgdGhlcmUgaXMgbm8g
c3BlY2lmaWMgdmFsdWUuCi0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KICAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fz
U2VlbkluSklUOyB9CiAgICAgCkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0
dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBtX2NoYWluOwog
ICAgIEpTVmFsdWUgbV9zcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIx
ODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3Jv
KG9wX3Jlc29sdmVfd2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAg
ICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX3RoaXMsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWQsIDkpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIC8q
IGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfc2Vs
ZiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9i
eV9pZF9wcm90bywgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3Jv
KG9wX2dldF9ieV9pZF9jaGFpbiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkBAIC0x
MjIsOSArMTIzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc3Ry
aW5nX2xlbmd0aCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3Jv
KG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNy
byhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKKyAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTEgQEAgUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIGlmICghc3RydWN0dXJlKQogICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CiAgICAgCi0gICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1
dF9ieV9pZCkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5v
dEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgbm90Rm91bmQpOworICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9wdXRfYnlfaWQKKyAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0g
bGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0
KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2Us
IHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKICAgICB9CkBAIC01NiwxNiArNTcsMTggQEAgUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAog
ICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QKLSAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZQorICAgICAgICAgICB8fCBp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmUpOwogICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
aW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNo
YWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKICAgICBBU1NFUlQo
bmV3U3RydWN0dXJlKTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRh
KCksIGlkZW50KTsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7
CiAgICAgCiAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOwogI2Vsc2UKQEAgLTk0LDI0ICs5Nywy
NCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50
KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKLSAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0
cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHViSW5mby51
LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAh
PSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBs
YWNlLAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVj
dFN0cnVjdHVyZS5nZXQoKSwKICAgICAgICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAgICAg
IG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKICAgICAgICAgQVNTRVJUKHN0
dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1
Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNW
YWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygK
ICAgICAgICAgICAgICAgICBTaW1wbGVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCkBAIC0xMTks
MTQgKzEyMiwxNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSwK
ICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7
CiAgICAgfQogICAgICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAg
IH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBQdXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgUHV0QnlJZFN0YXR1c19oCiAKKyNpbmNs
dWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fb2xkU3Ry
dWN0dXJlKDApCiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVj
dHVyZUNoYWluKDApCi0gICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9v
ZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjQsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNo
YWluLAotICAgICAgICBzaXplX3Qgb2Zmc2V0KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZShv
bGRTdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQpAQCAt
NzQsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9y
bWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gIW1fb2xkU3RydWN0dXJlKTsK
ICAgICAgICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX25ld1N0
cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9
PSAhbV9zdHJ1Y3R1cmVDaGFpbik7Ci0gICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9y
bWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IG5vdEZv
dW5kKSk7CisgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3Rh
dGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpKTsKICAg
ICB9CiAgICAgCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05MCw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2xkU3RydWN0dXJlOyB9CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX25ld1N0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlQ2hhaW47IH0KLSAgICBzaXplX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
UHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAg
U3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJl
OwogICAgIFN0cnVjdHVyZUNoYWluKiBtX3N0cnVjdHVyZUNoYWluOwotICAgIHNpemVfdCBtX29m
ZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxNyArMzIsMTkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBFTkFCTEUoTExJ
TlQpIHx8IEVOQUJMRShKSVQpCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9y
U3RydWN0dXJlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsK
ICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KAorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAqY29kZUJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIsIGF0dHJpYnV0ZXNJZ25v
cmVkLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0
YXR1cygpOwogICAgIAogICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKFJlc29sdmVHbG9i
YWxTdGF0dXM6OlNpbXBsZSwgc3RydWN0dXJlLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogfQor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkgfHwgRU5BQkxFKEpJVCkKIAogc3RhdGljIFJlc29sdmVH
bG9iYWxTdGF0dXMgY29tcHV0ZUZvckxMSW50KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5o
CShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFJlc29sdmVHbG9iYWxTdGF0dXNfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIFJl
c29sdmVHbG9iYWxTdGF0dXMoCi0gICAgICAgIFN0YXRlIHN0YXRlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IDAsIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwKKyAgICAgICAgU3RhdGUgc3RhdGUs
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldCwKICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpKQogICAg
ICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQpA
QCAtNzAsMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7IH0KICAgICAKICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9Ci0gICAgc2l6ZV90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBKU1ZhbHVlIHNwZWNpZmlj
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljVmFsdWU7IH0KIAogcHJpdmF0ZToKICAg
ICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7Ci0gICAgc2l6ZV90
IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIEpTVmFsdWUgbV9z
cGVjaWZpY1ZhbHVlOwogfTsgLy8gY2xhc3MgUmVzb2x2ZUdsb2JhbFN0YXR1cwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywxNSArMTEzLDYgQEAgcHVibGljOgogICAgIAogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzLnNpemUoKTsgfQogICAg
IAotICAgIGJvb2wgYWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3JhZ2UoKSBjb25zdAotICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzW2ldLT5pc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgLy8gQ2FsbCB0aGlzIGlmIHlvdSBrbm93
IHRoYXQgdGhlIHN0cnVjdHVyZSBzZXQgbXVzdCBjb25zaXN0IG9mIGV4YWN0bHkKICAgICAvLyBv
bmUgc3RydWN0dXJlLgogICAgIFN0cnVjdHVyZSogc2luZ2xldG9uU3RydWN0dXJlKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKICAg
ICAgICAgICAgICAgICBpbnQ4X3Qgc2NyYXRjaEdQUjsKICAgICAgICAgICAgICAgICBpbnQzMl90
IGRlbHRhQ2FsbFRvRG9uZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQ7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNr
OwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TbG93Q2FzZTsKICAgICAgICAg
ICAgICAgICBpbnQzMl90IGRlbHRhQ2hlY2tJbW1Ub0NhbGw7CkBAIC0yMTksNiArMjIwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDE2X3Qgc3RydWN0dXJlQ2hlY2s7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpAQCAt
MjMwLDYgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICB9IGdl
dDsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGludDE2X3Qgc3RydWN0dXJlVG9Db21wYXJlOworICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGJvb2wgdXNlc1Jlc3VsdCwgaW50IHJl
c3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAg
ICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUsIE5vZGVJbmRleCBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgICAgICBib29sIHVzZUlubGluZVN0b3Jh
Z2UsIHNpemVfdCBvZmZzZXQpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCk7CiAgICAgdm9pZCBo
YW5kbGVHZXRCeUlkKAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVk
VHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAg
IGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKQEAgLTE2MzAsMjUgKzE2MzAsMjAgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcgogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeU9mZnNldCgKICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwKLSAgICBib29sIHVzZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZzZXQpCisgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQogewogICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAg
c2l6ZV90IG9mZnNldE9mZnNldDsKLSAgICBpZiAodXNlSW5saW5lU3RvcmFnZSkgeworICAgIGlm
IChpc0lubGluZU9mZnNldChvZmZzZXQpKQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNl
OwotICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSkpOwotICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKLSAgICB9IGVsc2UgeworICAgIGVsc2UKICAgICAgICAgcHJvcGVy
dHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAg
ICBvZmZzZXRPZmZzZXQgPSAwOwotICAgIH0KICAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAog
ICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dy
YXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAogICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlKSk7CiAgICAgICAgIAogICAgIFN0b3JhZ2VBY2Nlc3NE
YXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IG9m
ZnNldCArIG9mZnNldE9mZnNldDsKKyAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRl
eFJlbGF0aXZlVG9CYXNlKG9mZnNldCk7CiAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmll
ck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiB9CkBAIC0xNjc3LDcgKzE2NzIsNiBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIAogICAg
IGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOwogICAgIAotICAgIGJvb2wg
dXNlSW5saW5lU3RvcmFnZTsKICAgICBpZiAoIWdldEJ5SWRTdGF0dXMuY2hhaW4oKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1
cy5zdHJ1Y3R1cmVTZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKTsKICAgICAgICAgSlNPYmplY3Qq
IGN1cnJlbnRPYmplY3QgPSAwOwpAQCAtMTY4Niw5ICsxNjgwLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRC
eUlkU3RhdHVzLmNoYWluKClbaV07CiAgICAgICAgICAgICBiYXNlID0gYWRkU3RydWN0dXJlVHJh
bnNpdGlvbkNoZWNrKGN1cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1cmUpOwogICAgICAgICB9
Ci0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBjdXJyZW50U3RydWN0dXJlLT5pc1VzaW5nSW5s
aW5lU3RvcmFnZSgpOwotICAgIH0gZWxzZQotICAgICAgICB1c2VJbmxpbmVTdG9yYWdlID0gZ2V0
QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5hbGxBcmVVc2luZ0lubGluZVByb3BlcnR5U3RvcmFn
ZSgpOworICAgIH0KICAgICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBidWdzIGxpa2UgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3ZSBuZWVkIHRvCiAgICAg
Ly8gZW5zdXJlIHRoYXQgdGhlIGJhc2Ugb2YgdGhlIG9yaWdpbmFsIGdldF9ieV9pZCBpcyBrZXB0
IGFsaXZlIHVudGlsIHdlJ3JlIGRvbmUgd2l0aApAQCAtMTcwNyw4ICsxNjk5LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICB9CiAgICAgCiAgICAgaGFuZGxlR2V0
QnlPZmZzZXQoCi0gICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwg
aWRlbnRpZmllck51bWJlciwgdXNlSW5saW5lU3RvcmFnZSwKLSAgICAgICAgZ2V0QnlJZFN0YXR1
cy5vZmZzZXQoKSk7CisgICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFz
ZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiB9CiAKIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQpAQCAtMjE3Miw3ICsyMTYzLDgg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGdldEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkKTsKKyAgICAgICAg
ICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKSA9PSBvcF9nZXRfYnlfaWQKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWRfb3V0
X29mX2xpbmUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdl
dChnZXRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2dldEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZF07CkBAIC0yMjI1LDcgKzIyMTcsOCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFNjb3Bl
ZFZhciwgT3BJbmZvKHNsb3QpLCBnZXRTY29wZUNoYWluLCBnZXQoc291cmNlKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wdXRfc2NvcGVkX3Zhcik7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwpAQCAtMjI0MSw4ICsyMjM0LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9i
eV9pZCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTog
ewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZF07CkBAIC0yMjU5LDI1ICsyMjU1LDIwIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpKSB7CiAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAgICAgICAgICAgICAgICBOb2Rl
SW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVz
Lm9sZFN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKQogICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAg
ICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFw
aChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRP
ZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dEJ5T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSks
IHByb3BlcnR5U3RvcmFnZSwgYmFzZSwgdmFsdWUpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgICAgICAg
ICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkg
KyBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0
ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShwdXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKICAgICAgICAg
ICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5k
KHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc0V4aXRTaXRl
CiAgICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVUcmFuc2l0
aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVj
dHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCisgICAgICAgICAgICAgICAgICAgICAg
ICYmIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0g
cHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQogICAgICAg
ICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmVDaGFpbklzU3RpbGxWYWxpZCgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpcmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCksCkBAIC0yMzA4LDE2ICsyMjk5LDExIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSkpKSwKICAgICAgICAgICAg
ICAgICAgICAgYmFzZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc2l6ZV90
IG9mZnNldE9mZnNldDsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdl
OwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5pc1Vz
aW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0
b3JhZ2UgPSBiYXNlOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmpl
Y3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICAgICAgICAgICAgICBvZmZz
ZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2Us
IGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwotICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgICAg
ICBQdXRCeU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9zdG9y
YWdlQWNjZXNzRGF0YS5zaXplKCkpLApAQCAtMjMyNiw3ICsyMzEyLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3Rv
cmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0
ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAg
ICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRT
dGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKQEAgLTI3MzgsOCArMjcyNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGdsb2JhbE9iamVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5zdHJ1Y3R1cmUo
KS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
cy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyLCBz
dGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVOdW1iZXIrKzsgLy8gU2tpcCBvdmVyIHRoZSB1
bnVzZWQgZ2xvYmFsIHJlc29sdmUgaW5mby4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDkg
KzExOSwxMyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGUoCiAgICAg
Y2FzZSBvcF9nZXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgogICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5l
OgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsX291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAg
Y2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFs
X3ZhcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3IEBAIHZvaWQgSklU
Q29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICNlbmRpZgogICAgICAgICBpbmZvLnBh
dGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNh
bGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nl
c1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7CiAgICAgICAgIGluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0dXJu
TG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9k
b25lKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQgPSBk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlTdG9yYWdlTG9hZCkpOwog
ICAgICAgICBpbmZvLnBhdGNoLmRmZy5iYXNlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
YmFzZUdQUjsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmRmZy52YWx1
ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTIxODA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsNiArMTM2LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxv
YWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNs
b3dQYXRoR2VuZXJhdG9yLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKQEAg
LTE0OCw2ICsxNDksNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQ
dHIgc3RydWN0dXJlSW1tLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBz
dHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxDb21wYWN0IHRhZ0xvYWRPclN0b3JlLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsQ29tcGFjdCBwYXlsb2FkTG9hZE9yU3RvcmUsCiAgICAgICAgIFNsb3dQYXRoR2VuZXJhdG9y
KiBzbG93UGF0aEdlbmVyYXRvciwKQEAgLTE2MSw2ICsxNjMsNyBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAg
ICAsIG1fc3RydWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNo
ZWNrKHN0cnVjdHVyZUNoZWNrKQorICAgICAgICAsIG1fcHJvcGVydHlTdG9yYWdlTG9hZChwcm9w
ZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICwgbV9sb2FkT3JT
dG9yZShsb2FkT3JTdG9yZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xODIsNiArMTg1
LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICBDb2RlT3JpZ2luIG1fY29k
ZU9yaWdpbjsKICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1t
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc3RydWN0dXJlQ2hlY2s7Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIG1fcHJvcGVydHlTdG9yYWdl
TG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxD
b21wYWN0IG1fbG9hZE9yU3RvcmU7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hDYWxsKENvZGVCbG9jayog
Y28KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7CiB9
CiAKLXN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IG9mZnNldCwgY29uc3QgRnVuY3Rpb25QdHIgJnNsb3dQYXRoRnVuY3Rpb24sIGJvb2wg
Y29tcGFjdCkKK3N0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBjb25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhG
dW5jdGlvbiwgYm9vbCBjb21wYWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZl
cihjb2RlQmxvY2spOwogCkBAIC01MiwxOCArNTIsMTkgQEAgc3RhdGljIHZvaWQgZGZnUmVwYXRj
aEJ5SWRTZWxmQWNjZXNzKENvZAogCiAgICAgLy8gUGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAm
IHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0
dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICBy
ZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFs
dWUpICogb2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3Jh
Z2Uob2Zmc2V0KSk7CiAgICAgZWxzZQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQp
OworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9h
ZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGlmIChjb21wYWN0KSB7Ci0gICAgICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwg
c2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFs
dWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNo
LmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hl
ZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9yZSksIHNpemVvZihKU1Zh
bHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSk7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xv
YWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRP
clN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKICAgICB9
CiAjZW5kaWYKIH0KQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNj
cmF0Y2goTGlua0J1ZmZlCiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVk
VG9SZXN0b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9Eb25lKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKIH0KIAotc3RhdGljIHZvaWQg
Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIHNp
emVfdCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNj
ZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiYgc3R1YlJvdXRpbmUpCitzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2Rl
TG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIHN0dWJS
b3V0aW5lKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CiAKQEAgLTEzOSwxMyArMTQwLDIzIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9D
aGFpbkFjY2Vzc1N0dWIKICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsKICAgICB9
CiAgICAgCi0gICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZQcm9wZXJ0
eVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkg
ewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCksIHJlc3VsdEdQUik7CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
Uiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwot
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zm
c2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHByb3RvT2JqZWN0
LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3R1Ykpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwor
ICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
LCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdEdQUik7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOworICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0
R1BSKTsKKyNlbmRpZgorICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3Ms
IGZhaWw7CiAgICAgCkBAIC0yNTMsNyArMjY0LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRC
eUlEKEV4ZWNTdGF0ZSogZQogICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpICE9IFBy
b3BlcnR5U2xvdDo6VmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBzaXpl
X3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5h
bWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzQ5LDEyICszNjAsMjAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3Rh
dAogICAgICAgICAgICAgfHwgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNs
b3Q6OkN1c3RvbSkgewogICAgICAgICAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkg
PT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUdQ
UiAhPSBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
c2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgc2NyYXRjaEdQUik7Ci0jZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnBheWxvYWQpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2Vsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BS
KTsKICNlbmRpZgorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0dWJK
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZW5kaWYKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYmFzZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25DYWxsR2V0dGVyOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTM4NSwxMyArNDA0LDI3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhl
Y1N0YXQKICAgICAgICAgICAgIGhhbmRsZXJDYWxsID0gc3R1YkppdC5jYWxsKCk7CiAgICAgICAg
ICAgICBzdHViSml0Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKLSAgICAg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHJlc3VsdEdQ
Uik7CisjZWxzZQorICAgICAgICAgICAgICAgIGlmIChiYXNlR1BSID09IHJlc3VsdFRhZ0dQUikg
eworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
LCByZXN1bHRHUFIpOworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hl
ZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdH
UFIpOworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgp
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
cmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAg
ICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBy
ZXN1bHRHUFIpOwogI2VuZGlmCisgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdWNjZXNzID0g
c3R1YkppdC5qdW1wKCk7CiAgICAgICAgICAgICBpc0RpcmVjdCA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTQ1MCw3ICs0ODMsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURQcm90b0xpc3Qo
RXhlCiAgICAgCiAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgpKTsKICAgICAK
LSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5v
cm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNTY3LDcgKzYwMCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlciBzdHViSml0OwogICAgIAotICAgIGlmIChzY3JhdGNo
R1BSID09IEludmFsaWRHUFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRlZCB8fCAhc3RydWN0dXJl
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSkgeworICAgIGlmIChzY3JhdGNoR1BSID09IEludmFs
aWRHUFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRlZCB8fCBpc091dE9mTGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkpIHsKICAgICAgICAgc2NyYXRjaEdQUiA9IFNwZWN1bGF0aXZlSklU
OjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgbmVlZFRvUmVz
dG9yZVNjcmF0Y2ggPSB0cnVlOwogICAgICAgICBzdHViSml0LnB1c2goc2NyYXRjaEdQUik7CkBA
IC01ODYsMjAgKzYxOSwyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAjZW5k
aWYKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNh
Y2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVU
YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnRhZykpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTY4NSwyMCArNzE4LDIwIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKIAogICAgIHN0dWJKaXQuc3RvcmVQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAg
ICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRP
ZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6
ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFn
ZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkp
KSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0
SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkp
OworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNl
dEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0
Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVU
YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0K
ICNlbmRpZgogICAgICAgICAgICAgCkBAIC03NTIsNyArNzg1LDcgQEAgc3RhdGljIGJvb2wgdHJ5
Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdo
ZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
IT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW4oZXhlYywgYmFzZUNlbGwpOwpAQCAtODE1LDcgKzg0OCw3IEBAIHN0YXRpYyBib29sIHRyeUJ1
aWxkUHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIHNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVy
ZSB3ZSBuZWVkIGEgcmVhbGxvYwotICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpCisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9
IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWlu
KGV4ZWMsIGJhc2VDZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29t
cGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1f
aml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGlibGVMb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMyV2l0aENv
bXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9h
ZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcp
KSwgcmVzdWx0VGFnR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBwYXls
b2FkTG9hZFdpdGhQYXRjaCA9IG1faml0LmxvYWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBh
dGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKICAgICAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPCiAgICAgfQogICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAogICAg
ICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVj
dHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAog
ICAgICAgICAgICAgdGFnTG9hZFdpdGhQYXRjaCwgcGF5bG9hZExvYWRXaXRoUGF0Y2gsIHNsb3dQ
YXRoLmdldCgpLCBkb25lTGFiZWwsCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQ
YXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpLAogICAgICAgICAgICAg
c2FmZUNhc3Q8aW50OF90PihyZXN1bHRQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3Jh
dGNoR1BSKSwKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPCiAKICAgICB3cml0ZUJhcnJpZXIoYmFzZVBheWxvYWRHUFIsIHZhbHVlVGFn
R1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIp
OwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9hZEdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAg
ICBKSVRDb21waWxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9
IG1faml0LmNvbnZlcnRpYmxlTG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9h
ZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHRhZ1N0b3JlV2l0aFBhdGNoID0gbV9qaXQu
c3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSkpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBwYXlsb2FkU3Rv
cmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZVBh
eWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKIApAQCAtNTk3LDcg
KzU5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICB9
CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVj
b3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCh0YWdTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHBheWxvYWRTdG9yZVdpdGhQYXRjaC5s
YWJlbCgpKSwKICAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0
PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLApAQCAtMzU1MCw3ICszNTUwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAg
ICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAg
YnJlYWs7CkBAIC0zODkxLDggKzM4OTEsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzTm90TWF0
Y2ggPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCByZXN1bHRQYXlsb2Fk
R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Cisj
aWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc091
dE9mTGluZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWws
IHJlc29sdmVJbmZvR1BSLCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7Cisg
ICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgaXNPdXRPZkxpbmUubGluaygmbV9q
aXQpOworI2VuZGlmCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4
KHJlc3VsdFBheWxvYWRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdo
dCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwg
cmVzdWx0VGFnR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIxODA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDk3LDcgKzQ5Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29t
cGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1f
aml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBy
ZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIHJlc3VsdEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3QgbG9hZFdp
dGhQYXRjaCA9IG1faml0LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIpOwogICAgIAogICAgIEpJ
VENvbXBpbGVyOjpMYWJlbCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgpOwpAQCAtNTE3LDggKzUx
OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9CiAg
ICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3Jk
KAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgbG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksCi0gICAgICAgICAgICBkb25lTGFi
ZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BS
KSwKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gsCisgICAgICAgICAgICBz
bG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHNj
cmF0Y2hHUFIpLAogICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxsID8gUHJvcGVy
dHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJl
Z2lzdGVyc0ZsdXNoZWQpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxl
YXNlKCkpOwpAQCAtNTM2LDcgKzUzNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgdmFsdWVV
c2UsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNoR1BSKTsKIAotICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICBKSVRDb21waWxlcjo6Q29u
dmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9CisgICAgICAgIG1faml0LmNv
bnZlcnRpYmxlTG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsMzIgc3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZVB0cldpdGhBZGRyZXNz
T2Zmc2V0UGF0Y2godmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIDAp
KTsKIAogICAgIEpJVENvbXBpbGVyOjpMYWJlbCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgpOwpA
QCAtNTY2LDcgKzU2OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXplZENhbGwsIE5vUmVzdWx0
LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZpZXIoaWRlbnRpZmllck51
bWJlcikpOwogICAgIH0KLSAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcyhQcm9wZXJ0eUFjY2Vz
c1JlY29yZChjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBK
SVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xv
d1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNh
c3Q8aW50OF90Pih2YWx1ZUdQUiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUikpKTsKKyAg
ICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKKyAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQo
CisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNo
ZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQYXRoLmdldCgpLCBkb25l
TGFiZWwsCisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxp
bnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOwogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTM1NzQsNyAr
MzU4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0
R1BSKTsKICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBp
bGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzg5MCw5ICszODk2LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgc3RydWN0dXJlc0RvbnRNYXRjaCA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90
RXF1YWwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAKICAgICAgICAgLy8gRmFzdCBjYXNlCi0gICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXNvbHZlSW5mb0dQUiwgT0JKRUNU
X09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVzb2x2ZUluZm9HUFIpOwot
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCBy
ZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlNjYWxlUHRyKSwgcmVzdWx0R1BSKTsKKyNpZiBE
RkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZM
aW5lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVz
b2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAg
ICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7
CisjZW5kaWYKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3Vs
dEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1
bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQdHIsIC1pbmxpbmVTdG9y
YWdlQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMDMsOCArMjEwMyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJp
dG9ySUQoKSkpOwogICAgICAgICAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mg
cHJvcGVydHkgc3RvcmFnZSBwb2ludGVyLgotICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0R1BSLCBzY3JhdGNo
R1BSKTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
KTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
MCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgQ2xhc3NUeXBlOjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSkpOwogICAgIH0KIAogICAgIC8vIEl0IGlzIGFjY2VwdGFibGUg
dG8gaGF2ZSBzdHJ1Y3R1cmUgYmUgZXF1YWwgdG8gc2NyYXRjaCwgc28gbG9uZyBhcyB5b3UncmUg
ZmluZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKAogICAgIH0KIAogICAgIGlmIChpc0pTRmluYWxPYmplY3QoY2Vs
bCkpIHsKLSAgICAgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwq
PihjZWxsKSwgdmlzaXRvcik7CisgICAgICAgIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
Y29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyMiw3ICsx
ODIyLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwogICAgICAg
ICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogCiAgICAgICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYXNPYmplY3Qoc2xvdC5zbG90QmFzZSgpKTsKLSAgICAgICAgc2l6ZV90
IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNj
ZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAg
ICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KQEAgLTE4NTEs
NyArMTg1MSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUcKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lLCBi
YXNlVmFsdWUsIHNsb3Quc2xvdEJhc2UoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIGlm
ICghY291bnQpIHsKICAgICAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZW5l
cmljKTsKQEAgLTMwNDUsNiArMzA0NSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWMKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV93aXRo
X3RoaXMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQorICAgIERFRklORV9P
UENPREUob3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3BfZ2V0
X2J5X2lkKSB7CiAgICAgICAgIC8qIGdldF9ieV9pZCBkc3QocikgYmFzZShyKSBwcm9wZXJ0eShp
ZCkgc3RydWN0dXJlKHNJRCkgbm9wKG4pIG5vcChuKSBub3AobikKIApAQCAtMzUyNyw2ICszNTI4
LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICBza2lwX2dldF9zdHJpbmdfbGVuZ3RoOgog
ICAgIGdvdG8gKigmJnNraXBfcHV0X2J5X2lkKTsKICNlbmRpZgorICAgIERFRklORV9PUENPREUo
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lk
KSB7CiAgICAgICAgIC8qIHB1dF9ieV9pZCBiYXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBu
b3Aobikgbm9wKG4pIG5vcChuKSBub3AobikgZGlyZWN0KGIpCiAKQEAgLTM1NjUsNiArMzU2Nyw4
IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uKSB7CiAgICAgICAgIC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
IGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVj
dHVyZShzSUQpIHN0cnVjdHVyZUNoYWluKGNoYWluKSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAg
ICAgICAKQEAgLTM2MDUsNyArMzYwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAg
ICAgICAgICAgYmFzZU9iamVjdC0+c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5l
Y2Vzc2FyeSgqZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKIAogICAgICAgICAgICAgICAgIGlu
dCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gdlBDWzddLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gdlBD
WzddLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0
Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2JhbERhdGEsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAg
ICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBvZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIApAQCAtMzYz
OSw3ICszNjQzLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZUNlbGwtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZUNlbGwpOwogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9
IHZQQ1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBD
WzVdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gdlBDWzVdLnUub3Bl
cmFuZDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVj
dC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2Jh
bERhdGEsIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNl
dCk7CiAgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLCBvZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsK
QEAgLTM3MTcsNyArMzcyMSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIEpTVmFs
dWUgZXhwZWN0ZWRTdWJzY3JpcHQgPSBjYWxsRnJhbWUtPnIoZXhwZWN0ZWQpLmpzVmFsdWUoKTsK
ICAgICAgICAgaW50IGluZGV4ID0gY2FsbEZyYW1lLT5yKGkpLmkoKSAtIDE7CiAgICAgICAgIEpT
VmFsdWUgcmVzdWx0OwotICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gMDsKICAgICAgICAgaWYgKHN1YnNjcmlwdCA9PSBleHBlY3RlZFN1YnNj
cmlwdCAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCkgPT0gaXQtPmNhY2hlZFN0cnVjdHVyZSgpKSAmJiBpdC0+Z2V0T2Zmc2V0KGluZGV4LCBv
ZmZzZXQpKSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFs
dWUoYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwogICAgICAg
ICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3BuYW1lKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2Ny
ZWF0ZV9hY3RpdmF0aW9uKQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklO
RV9PUChvcF9lcV9udWxsKQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKQEAg
LTMxOSw4ICszMjAsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
X291dF9vZl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92
YWwpCkBAIC00NDEsNiArNDQ1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfZGl2KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZXEpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9n
ZXRfYnlfdmFsKQpAQCAtNDc4LDggKzQ4MywxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKTsKQEAgLTUzNyw2ICs1NDUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHVi
Q29tcGlsYXRpCiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0
Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGdldFN0cnVjdHVyZVRvQ29tcGFyZSkpOwogICAgICAgICBpbmZvLnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LnN0cnVjdHVyZUNoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGdldFN0cnVjdHVyZUNoZWNrKSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQu
cHJvcGVydHlTdG9yYWdlTG9hZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0
eVN0b3JhZ2VMb2FkKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaW5mby5wYXRjaC5i
YXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRp
b25PZihnZXREaXNwbGFjZW1lbnRMYWJlbCkpOwogI2Vsc2UKQEAgLTU1MCw2ICs1NTksNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgY2FzZSBQdXRCeUlk
OgogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQYXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihob3RQYXRoQmVnaW4pOwogICAgICAgICBpbmZvLnBhdGNoLmJhc2Vs
aW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihwdXRTdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51
LnB1dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3
ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHBy
b3BlcnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBh
dGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHB1dERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW47CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgZ2V0U3RydWN0dXJlVG9Db21wYXJlOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBnZXRTdHJ1Y3R1cmVDaGVjazsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFM
YWJlbENvbXBhY3QgZ2V0RGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpAQCAtMTg1LDE3ICsxODYs
MjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogCi0gICAgICAgIFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbygKKyAgICAgICAgICAgIFByb3BlcnR5U3R1YkdldEJ5SWRfVCwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdp
biwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9D
b21wYXJlLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0
dXJlQ2hlY2ssCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFi
ZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1
dFJlc3VsdCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRp
c3BsYWNlbWVudExhYmVsLAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVt
cCBzdHJ1Y3R1cmVDaGVjaywgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxh
Y2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1l
bnRMYWJlbDIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJl
bDIsCiAjZW5kaWYKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQp
CiAgICAgICAgICAgICA6IG1fdHlwZShHZXRCeUlkKQogICAgICAgICAgICAgLCBieXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAsIGhvdFBhdGhCZWdpbihob3RQYXRoQmVn
aW4pCiAgICAgICAgICAgICAsIGdldFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBh
cmUpCiAgICAgICAgICAgICAsIGdldFN0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNrKQorICAg
ICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgZ2V0RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxh
Y2VtZW50TGFiZWwpCiAjZWxzZQpAQCAtMjA2LDE1ICsyMTQsMjEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9u
SW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5U3R1YkNvbXBp
bGF0aW9uSW5mbygKKyAgICAgICAgICAgIFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQsCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bDMyIGRpc3BsYWNlbWVudExhYmVsMikKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDEsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyCiAjZW5kaWYKKyAgICAgICAgICAgICkKICAg
ICAgICAgICAgIDogbV90eXBlKFB1dEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikK
KyAgICAgICAgICAgICwgcHJvcGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQog
ICAgICAgICAgICAgLCBwdXRTdHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJlVG9Db21wYXJlKQog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAsIHB1dERpc3BsYWNlbWVudExhYmVsKGRp
c3BsYWNlbWVudExhYmVsKQpAQCAtMjk1LDQwICszMDksNDAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gSklUKGdsb2JhbERhdGEsIGNvZGVCbG9jaykucHJpdmF0ZUNvbXBp
bGUoZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ssIGVmZm9ydCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0
ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oc3R1YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBp
ZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBo
aWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGds
b2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9
IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxl
R2V0QnlJZFNlbGZMaXN0KHN0dWJJbmZvLCBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGN1cnJlbnRJ
bmRleCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgfQot
ICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkK
KyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0
ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xp
c3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0
dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxG
cmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFp
bkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVu
dEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXpl
X3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5t
X2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBq
aXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1
Y3R1cmVMaXN0LCBjdXJyZW50SW5kZXgsIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwg
c2xvdCwgY2FjaGVkT2Zmc2V0LCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBK
SVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29k
ZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZh
dGVDb21waWxlR2V0QnlJZENoYWluKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIGNoYWluLCBjb3VudCwg
aWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgcmV0dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCisgICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5
dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CkBAIC0zNTgsOCArMzcyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaEdldEJ5
SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHJlc2V0UGF0Y2hQdXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyop
OwotICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBh
dGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
KiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJl
KiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpOworICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9j
ayogY29kZWJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFs
RGF0YSYsIENvZGVCbG9jayogY29kZWJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRy
ZXNzUHRyKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0
aChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC0zNzcsMTIgKzM5MSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCk7CiAgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKICAgICAgICAgSklUQ29kZSBwcml2YXRlQ29t
cGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRpb25FZmZv
cnQpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0
dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAg
ICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQp
OwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJl
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1
Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1
cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFN0cnVjdHVyZUNoYWluKiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmVDaGFpbiosIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0
cnVjdHVyZSosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0
dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsK
IAogICAgICAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHByaXZhdGVDb21w
aWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKEpTR2xvYmFsRGF0YSosIFRyYW1wb2xpbmVTdHJ1Y3R1
cmUqKTsKICAgICAgICAgTGFiZWwgcHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKEpTR2xvYmFs
RGF0YSosIGJvb2wgaXNDb25zdHJ1Y3QgPSBmYWxzZSk7CkBAIC00MzYsNiArNDUwLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpIHsgfQog
I2VuZGlmCiAKKyAgICAgICAgZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93
bk5vdEZpbmFsIH07CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludCh1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5z
aWduZWQmIG9wLCBpbnQzMl90JiBjb25zdGFudCk7CiAKQEAgLTQ2OCwxMCArNDg0LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRIb3RQYXRoKCk7CiAg
ICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJh
c2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBp
bGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywg
UmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAg
dm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJl
c3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsK
LSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBv
ZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwgc2l6ZV90
IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxv
YWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdl
dERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lz
dGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAg
ICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQs
IEZpbmFsT2JqZWN0TW9kZSA9IE1heUJlRmluYWwpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXRE
aXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3Rl
cklEIHZhbHVlUGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAogICAgICAg
ICAvLyBBcml0aG1ldGljIG9wY29kZSBoZWxwZXJzCiAgICAgICAgIHZvaWQgZW1pdEFkZDMyQ29u
c3RhbnQodW5zaWduZWQgZHN0LCB1bnNpZ25lZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0
VHlwZSBvcFR5cGUpOwpAQCAtNTQ3LDEwICs1NjMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVy
Kik7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywg
aW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9m
ZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZz
ZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRj
aCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdp
c3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSA9IE1heUJlRmluYWwpOworICAgICAgICB2
b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZh
bHVlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAjZW5kaWYgLy8gVVNFKEpTVkFM
VUUzMl82NCkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRo
b2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVN
ZXRob2RzLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjksMTEgKzQyOSw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHIKICAgICBzdG9yZVB0cihUcnVz
dGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9y
SUQoKSkpOwogCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZSBwb2ludGVyCi0gICAgaWYgKENsYXNzVHlwZTo6aGFzSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEpTT2JqZWN0KSksIHJlc3VsdCwgc3RvcmFn
ZVB0cik7Ci0gICAgICAgIHN0b3JlUHRyKHN0b3JhZ2VQdHIsIEFkZHJlc3MocmVzdWx0LCBDbGFz
c1R5cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCks
IEFkZHJlc3MocmVzdWx0LCBDbGFzc1R5cGU6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0
ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklE
IHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NCwxNiArNzk0LDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWMKIAogCiAgICAgLy8gVmVy
aWZ5IHN0cnVjdHVyZS4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVn
VDApOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKHJlc29sdmVJbmZvQWRkcmVzcyksIHJlZ1QzKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDMsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgc3Ry
dWN0dXJlKSksIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJl
Z1QxLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CiAKICAgICAvLyBMb2FkIHByb3BlcnR5LgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3By
b3BlcnR5U3RvcmFnZSkpLCByZWdUMik7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDMsIE9CSkVD
VF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlZ1QzKTsKLSAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDApOyAvLyBwYXlsb2FkCi0gICAgbG9hZDMy
KEJhc2VJbmRleChyZWdUMiwgcmVnVDMsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOyAvLyB0YWcKKyAgICBjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzLCBLbm93bk5vdEZpbmFsKTsKICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIChkeW5hbWljID8gT1BDT0RFX0xFTkdUSChv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSA6IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV9nbG9i
YWwpKSwgZHN0LCByZWdUMSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsOSArNzAxLDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAgICAgLy8gTG9hZCBj
YWNoZWQgcHJvcGVydHkKICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBhbHdh
eXMgdXNlcyBleHRlcm5hbCBzdG9yYWdlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JK
RUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSkpLCByZWdUMCk7
CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZl
SW5mbywgb2Zmc2V0KSksIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMCwgcmVn
VDEsIFNjYWxlUHRyKSwgcmVnVDApOworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDAs
IHJlZ1QwLCByZWdUMSwgcmVnVDAsIEtub3duTm90RmluYWwpOwogICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Myw3ICs5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChJ
bnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIC8vIEFzc2VydCB0aGF0IHRoZSBmb2xsb3dpbmcg
aW5zdHJ1Y3Rpb24gaXMgYSBnZXRfYnlfaWQuCi0gICAgQVNTRVJUKG1faW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9j
aGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkKTsKKyAgICBBU1NFUlQobV9pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQKKyAgICAgICAgfHwgbV9p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5H
VEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWRfb3V0X29mX2xp
bmUpOwogICAgIAogICAgIGN1cnJlbnRJbnN0cnVjdGlvbiArPSBPUENPREVfTEVOR1RIKG9wX21l
dGhvZF9jaGVjayk7CiAgICAgCkBAIC0zMzMsNyArMzM0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVH
ZXRCeUlkSG90UGF0aCgpCiAgICAgUGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAg
IGFkZFNsb3dDYXNlKHN0cnVjdHVyZUNoZWNrKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDIpOworICAg
IENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgp
KSwgcmVnVDIpOwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxID0gbG9h
ZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0
QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMCk7IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWxDb21w
YWN0IGRpc3BsYWNlbWVudExhYmVsMiA9IGxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQ
YXRjaChBZGRyZXNzKHJlZ1QyLCBwYXRjaEdldEJ5SWREZWZhdWx0T2Zmc2V0KSwgcmVnVDEpOyAv
LyB0YWcKICAgICAKQEAgLTM0MSw3ICszNDIsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRI
b3RQYXRoKCkKICAgICAKICAgICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdl
dEJ5SWRIb3RQYXRoKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBw
ZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5
dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJl
Q2hlY2ssIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQp
KTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwg
aG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0
UmVzdWx0KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKQEAgLTM5OSw3ICs0MDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qCiAgICAgRGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7
CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSksIHJlZ1QxKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QxKTsKICAgICBEYXRhTGFiZWwzMiBk
aXNwbGFjZW1lbnRMYWJlbDEgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDIs
IEFkZHJlc3MocmVnVDEsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsgLy8gcGF5bG9hZAog
ICAgIERhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMiA9IHN0b3JlUHRyV2l0aEFkZHJlc3NP
ZmZzZXRQYXRjaChyZWdUMywgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNl
dCkpOyAvLyB0YWcKICAgICAKQEAgLTQwNyw3ICs0MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdU
MiwgcmVnVDEsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcyk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9i
eXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIGRpc3BsYWNl
bWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyKSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0Nv
bXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5
U3R1YlB1dEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9D
b21wYXJlLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNl
bWVudExhYmVsMikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCkBAIC00MzAsMzAgKzQzMSw0MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X2lkKEluc3RydWN0CiB9CiAKIC8vIENvbXBpbGUgYSBzdG9yZSBpbnRvIGFuIG9iamVjdCdz
IHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGls
ZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJl
Z2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNv
bXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFn
LCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQog
ewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQ7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJh
c2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7Ci0gICAgZW1p
dFN0b3JlKG9mZnNldCwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CisgICAgaWYgKGlz
T3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhi
YXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBl
bWl0U3RvcmUoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCB2YWx1ZVRhZywgdmFs
dWVQYXlsb2FkLCBiYXNlKTsKIH0KIAogLy8gQ29tcGlsZSBhIGxvYWQgZnJvbSBhbiBvYmplY3Qn
cyBwcm9wZXJ0eSBzdG9yYWdlLiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBp
bGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywg
UmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6
OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZz
ZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKKyAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBlbWl0TG9hZChpbmRleFJlbGF0aXZlVG9C
YXNlKGNhY2hlZE9mZnNldCksIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgYmFzZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gcmVzdWx0UGF5
bG9hZDsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCB0ZW1wKTsKLSAgICBlbWl0TG9hZChvZmZzZXQsIHJlc3VsdFRhZywgcmVz
dWx0UGF5bG9hZCwgdGVtcCk7CisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0Ojpv
ZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHRlbXApOworICAgIGVtaXRMb2FkKGluZGV4UmVs
YXRpdmVUb0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1w
KTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2Us
IFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBj
YWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCog
YmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09m
UHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdFRhZyk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0
VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwot
ICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSksIHJlc3VsdFRhZyk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJhc2UtPmxvY2F0aW9uRm9yT2Zmc2V0KGNhY2hl
ZE9mZnNldCkpLCByZXN1bHRUYWcpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcs
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxv
YWQpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwg
cmVzdWx0VGFnKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXls
b2FkKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIG9mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShjYWNoZWRPZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgLy8gVGhlIGNvZGUgYmVsb3cgYXNz
dW1lcyB0aGF0IHJlZ1QwIGNvbnRhaW5zIHRoZSBiYXNlUGF5bG9hZCBhbmQgcmVnVDEgY29udGFp
bnMgdGhlIGJhc2VUYWcuIFJlc3RvcmUgdGhlbSBmcm9tIHRoZSBzdGFjay4KICNpZiBDUFUoTUlQ
UykgfHwgQ1BVKFNINCkgfHwgQ1BVKEFSTSkKQEAgLTQ4OSw3ICs1MDEsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgCiAgICAgLy8gUmVhbGxvY2F0ZSBw
cm9wZXJ0eSBzdG9yYWdlIGlmIG5lZWRlZC4KICAgICBDYWxsIGNhbGxUYXJnZXQ7Ci0gICAgYm9v
bCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAg
ICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmICh3
aWxsTmVlZFN0b3JhZ2VSZWFsbG9jKSB7CiAgICAgICAgIC8vIFRoaXMgdHJhbXBvbGluZSB3YXMg
Y2FsbGVkIHRvIGxpa2UgYSBKSVQgc3R1YjsgYmVmb3JlIHdlIGNhbiBjYW4gY2FsbCBhZ2FpbiB3
ZSBuZWVkIHRvCiAgICAgICAgIC8vIHJlbW92ZSB0aGUgcmV0dXJuIGFkZHJlc3MgZnJvbSB0aGUg
c3RhY2ssIHRvIHByZXZlbnQgdGhlIHN0YWNrIGZyb20gYmVjb21pbmcgbWlzYWxpZ25lZC4KQEAg
LTQ5OSw3ICs1MTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlv
CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyBiYXNlCiAgICAgICAgIHN0dWJD
YWxsLnNraXBBcmd1bWVudCgpOyAvLyBpZGVudAogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1l
bnQoKTsgLy8gdmFsdWUKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMy
KG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKSk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIobmV3
U3RydWN0dXJlKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwocmVnVDApOwogCkBAIC01NTMsNyAr
NTY1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIHJl
cGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVM
b2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBK
SVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpwYXRjaEdldEJ5SWRT
ZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZm
ZXIoY29kZUJsb2NrKTsKICAgICAKQEAgLTU2MSwxNSArNTczLDE0IEBAIHZvaWQgSklUOjpwYXRj
aEdldEJ5SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8g
SklUU3R1YnM6OmN0aV9vcF9nZXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0
aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxs
ZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRf
c2VsZl9mYWlsKSk7CiAgICAgCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNh
Y2hlZE9mZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5
IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4K
ICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFi
ZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9D
b21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZz
ZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiksIG9m
ZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCisg
ICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90
UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zm
c2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4u
ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5k
aXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVk
T2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8v
IHBheWxvYWQKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNo
ZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0
YWcKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNp
emVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBk
aXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxv
Y2spOwogICAgIApAQCAtNTc3LDEyICs1ODgsMTEgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJl
cGxhY2UoQ29kZUJsb2NrKgogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfcHV0
X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8gYW55dGhpbmcgaW50ZXJlc3Rpbmcgcmln
aHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5B
ZGRyZXNzLCBGdW5jdGlvblB0cihkaXJlY3QgPyBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5l
cmljIDogY3RpX29wX3B1dF9ieV9pZF9nZW5lcmljKSk7CiAgICAgCi0gICAgaW50IG9mZnNldCA9
IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9mZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZz
ZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0
cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxp
bmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXQg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAvLyBwYXlsb2Fk
Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50
TGFiZWwyKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
OyAvLyB0YWcKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNl
dChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhv
dFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uo
Y2FjaGVkT2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2Fk
KSk7IC8vIHBheWxvYWQKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1
dC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2Fj
aGVkT2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8g
dGFnCiB9CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtNjI5LDcgKzYzOSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlu
a0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9i
eV9pZF9hcnJheV9mYWlsKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtNzAw
LDcgKzcxMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHIKIH0K
IAogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3Jw
aGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpT
Q2VsbCoKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVj
dHVyZSk7CkBAIC03NjAsNyArNzcwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQg
Y3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC04MjksNyArODM5LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29k
ZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAg
aG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAgLTkwNCw3ICs5MTQsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2Rl
KCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNv
dW50KTsKQEAgLTk3NSwxMyArOTg1LDI3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbihTdHIKICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0
dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0KSk7CiB9
CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBv
ZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lzdGVy
SUQgb2Zmc2V0LCBGaW5hbE9iamVjdE1vZGUgZmluYWxPYmplY3RNb2RlKQogewogICAgIEFTU0VS
VChzaXplb2YoSlNWYWx1ZSkgPT0gOCk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7Ci0gICAgbG9hZFB0
cihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2FkUHRyKEJh
c2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09
IE1heUJlRmluYWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFu
LCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIGJhc2UpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5l
LmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tUHRyKEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLCBiYXNlKTsKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0gZWxz
ZSB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJh
bmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9y
YWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGlu
ZS5saW5rKHRoaXMpOworI2VuZGlmCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICB9CisgICAgbG9h
ZDMyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRQYXlsb2FkKTsKKyAgICBsb2FkMzIoQmFzZUluZGV4
KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykgLSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KSwgcmVzdWx0VGFnKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDA2LDYgKzEwMzAsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3RpCiAgICAgbG9hZDMyKGFkZHJlc3NGb3Io
aSksIHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBPQkpF
Q1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9udW1DYWNoZWFibGVTbG90cykp
KSk7CisgICAgYWRkMzIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IsIG1fb2Zmc2V0QmFzZSkpLCByZWdUMyk7CiAgICAgY29tcGlsZUdldERpcmVj
dE9mZnNldChyZWdUMiwgcmVnVDEsIHJlZ1QwLCByZWdUMyk7ICAgIAogICAgIAogICAgIGVtaXRT
dG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MSwxMCArMTUxLDI2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKElu
c3RydWMKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiB9CiAKLXZvaWQgSklUOjpjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCit2b2lkIEpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3Rl
cklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBGaW5hbE9iamVjdE1vZGUgZmluYWxPYmpl
Y3RNb2RlKQogewotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2gpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHNjcmF0
Y2gsIG9mZnNldCwgU2NhbGVQdHIsIDApLCByZXN1bHQpOworICAgIEFTU0VSVChzaXplb2YoSlNW
YWx1ZSkgPT0gOCk7CisgICAgCisgICAgaWYgKGZpbmFsT2JqZWN0TW9kZSA9PSBNYXlCZUZpbmFs
KSB7CisgICAgICAgIEp1bXAgaXNJbmxpbmUgPSBicmFuY2gzMihMZXNzVGhhbiwgb2Zmc2V0LCBU
cnVzdGVkSW1tMzIoaW5saW5lU3RvcmFnZUNhcGFjaXR5KSk7CisgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNo
KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICBpc0lubGluZS5saW5rKHRo
aXMpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEpTT2JqZWN0OjpvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKSArIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCBiYXNlLCBzY3JhdGNoKTsKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0gZWxz
ZSB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJh
bmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9y
YWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGlu
ZS5saW5rKHRoaXMpOworI2VuZGlmCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoKTsKKyAgICB9CisgICAg
bG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgLWlubGluZVN0b3Jh
Z2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdCk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
MjgzLDcgKzI5OSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbioK
IHZvaWQgSklUOjplbWl0X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIC8vIEFzc2VydCB0aGF0IHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24g
aXMgYSBnZXRfYnlfaWQuCi0gICAgQVNTRVJUKG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChj
dXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9w
Y29kZSkgPT0gb3BfZ2V0X2J5X2lkKTsKKyAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNr
KSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQKKyAgICAgICAgfHwgbV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOwogCiAgICAg
Y3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAg
ICB1bnNpZ25lZCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
QEAgLTM3MywxNCArMzkwLDE0IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50
IGJhc2UKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nh
c2Uoc3RydWN0dXJlQ2hlY2spOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVj
dDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QwKTsKKyAgICBDb252ZXJ0aWJsZUxv
YWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QwKTsKICAg
ICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsID0gbG9hZFB0cldpdGhDb21wYWN0
QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDAsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZz
ZXQpLCByZWdUMCk7CiAKICAgICBMYWJlbCBwdXRSZXN1bHQodGhpcyk7CiAKICAgICBFTkRfVU5J
TlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAotICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9u
SW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVudExhYmVsLCBw
dXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQ
cm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29k
ZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNr
LCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCwgcHV0UmVzdWx0KSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQ0
MCwxNCArNDU3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioK
ICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsKIAotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZWdUMik7CisgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9
IGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFi
ZWwgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDEsIEFkZHJlc3MocmVnVDIs
IHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NF
UVVFTkNFKHNlcXVlbmNlUHV0QnlJZCk7CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJG
b3JQcm9wZXJ0eUFjY2Vzcyk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
LmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwg
bV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIGRpc3Bs
YWNlbWVudExhYmVsKSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBl
bmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0
ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBwcm9wZXJ0eVN0
b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC00NzEsMjggKzQ4OCw0MSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiAKIC8vIENvbXBpbGUgYSBzdG9yZSBp
bnRvIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIHRoZQogLy8g
dmFsdWUgaW4gb2JqZWN0UmVnLgotdm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9p
ZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IHZhbHVlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9
IGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBzdG9y
ZVB0cih2YWx1ZSwgQWRkcmVzcyhiYXNlLCBvZmZzZXQpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBzdG9yZVB0cih2YWx1ZSwgQWRkcmVzcyhiYXNl
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzaXplb2YoSlNWYWx1ZSkgKiBv
ZmZzZXRJbklubGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBzdG9yZVB0cih2YWx1ZSwgQWRkcmVzcyhi
YXNlLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zm
c2V0KSkpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3BlcnR5
IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVj
dE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVk
T2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAg
IGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXQpLCByZXN1bHQpOworICAg
IGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzaXplb2YoSlNW
YWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdCk7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlc3VsdCwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKGNhY2hlZE9mZnNldCkpLCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNo
ZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAg
ICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHQpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zm
c2V0KSkgeworICAgICAgICBsb2FkUHRyKGJhc2UtPmxvY2F0aW9uRm9yT2Zmc2V0KGNhY2hlZE9m
ZnNldCksIHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0
cihiYXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdCk7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBz
aXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgSnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAg
IC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KQEAgLTUy
Miw3ICs1NTIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAj
ZW5kaWYKICAgICAKICAgICAvLyBlbWl0IGEgY2FsbCBvbmx5IGlmIHN0b3JhZ2UgcmVhbGxvYyBp
cyBuZWVkZWQKLSAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpOworICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCk7CiAgICAgaWYgKHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8gVGhp
cyB0cmFtcG9saW5lIHdhcyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2UgY2Fu
IGNhbiBjYWxsIGFnYWluIHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4g
YWRkcmVzcyBmcm9tIHRoZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNvbWlu
ZyBtaXNhbGlnbmVkLgpAQCAtNTMyLDcgKzU2Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJh
c2UKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0
dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
VHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdU
MCk7CiAgICAgICAgIGVtaXRHZXRKSVRTdHViQXJnKDIsIHJlZ1QxKTsKQEAgLTU3Miw3ICs2MDIs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0
aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6
cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihj
b2RlQmxvY2spOwogCkBAIC01ODAsMTQgKzYxMCwxMyBAQCB2b2lkIEpJVDo6cGF0Y2hHZXRCeUlk
U2VsZihDb2RlQmxvY2sqIGNvCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9n
ZXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyBy
aWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7CiAKLSAg
ICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8g
UGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhl
biBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwot
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2Vt
ZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9u
SXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChz
dHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0
T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChz
dHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXRSZWxhdGl2ZVRv
UGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaFB1dEJ5
SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBhdGNoUHV0QnlJ
ZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBSZXBhdGNo
QnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTk1LDExICs2MjQsMTAgQEAg
dm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogICAgIC8vIFNob3VsZCBw
cm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNuJ3QgZG8g
YW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
Q2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihkaXJlY3QgPyBjdGlf
b3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1dF9ieV9pZF9nZW5lcmljKSk7
CiAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAg
ICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJv
bSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1
cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNl
bWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlv
bklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091
dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02
NDMsNyArNjcxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBG
dW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlw
ZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVC
bG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNp
bmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0
YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC03MTAsNyArNzM4LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVy
VG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3By
b3RvX2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgSnVtcCBm
YWlsdXJlQ2FzZSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogICAgIGJvb2wg
bmVlZHNTdHViTGluayA9IGZhbHNlOwpAQCAtNzcwLDcgKzc5OCw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1w
TG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJDb2RlLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3Ry
dWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIC8vIFRoZSBwcm90b3R5cGUgb2JqZWN0IGRlZmluaXRlbHkgZXhp
c3RzIChpZiB0aGlzIHN0dWIgZXhpc3RzIHRoZSBDb2RlQmxvY2sgaXMgcmVmZXJlbmNpbmcgYSBT
dHJ1Y3R1cmUgdGhhdCBpcwogICAgIC8vIHJlZmVyZW5jaW5nIHRoZSBwcm90b3R5cGUgb2JqZWN0
IC0gbGV0J3Mgc3BlY3VsYXRpdmVseSBsb2FkIGl0J3MgdGFibGUgbmljZSBhbmQgZWFybHkhKQpA
QCAtODM5LDcgKzg2Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xp
c3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKHN0dWJDb2RlLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVf
dCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJl
bnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIEFTU0VSVChjb3VudCk7CiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsKQEAgLTkx
NCw3ICs5NDIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChz
dHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NTQsNyArOTU0LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdl
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJh
bWUsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAg
ICAgaWYgKCFjb3VudCkgewogICAgICAgICBzdHViSW5mby0+YWNjZXNzVHlwZSA9IGFjY2Vzc19n
ZXRfYnlfaWRfZ2VuZXJpYzsKQEAgLTE0ODYsMTMgKzE0ODYsMTYgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04oSlNPYmplY3QqLCBvcF9wdXRfYgogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tG
cmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBpbnQzMl90IG9sZFNpemUgPSBzdGFja0ZyYW1l
LmFyZ3NbM10uaW50MzIoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHN0YWNrRnJh
bWUuYXJnc1s0XS5zdHJ1Y3R1cmUoKTsKLSAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaW50MzJfdCBuZXdTaXplID0gbmV3
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIAorICAgIEFTU0VSVChvbGRTaXpl
ID49IDApOworICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICBBU1NFUlQoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoYmFzZVZh
bHVlKTsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc3RhY2tGcmFtZS5nbG9iYWxE
YXRhOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd1Byb3BlcnR5
U3RvcmFnZShnbG9iYWxEYXRhLCBvbGRTaXplLCBuZXdTaXplKTsKLSAgICBiYXNlLT5zZXRQcm9w
ZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGJhc2UtPmdyb3dPdXRPZkxpbmVTdG9yYWdlKGds
b2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOworICAgIGJhc2UtPnNldE91dE9mTGluZVN0b3Jh
Z2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIAogICAgIHJldHVybiBi
YXNlOwogfQpAQCAtMTgxNCw3ICsxODE3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wXwogICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAg
ICAgSlNPYmplY3QqIHNsb3RCYXNlT2JqZWN0ID0gYXNPYmplY3Qoc2xvdC5zbG90QmFzZSgpKTsK
ICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogCiAgICAgaWYgKHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpCiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhjb2RlQmxvY2ssIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9n
ZXRfYnlfaWRfcHJvdG9fZmFpbCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQK
ICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAg
ICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNh
Y2hlZE9mZnNldCgpKSkgeworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAg
ICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTk0MCw3ICs5NDYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2Uo
KSkgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJv
cGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0
dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbApAQCAtOTUyLDcgKzk1
OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7
CiAgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
c2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2Jh
bERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBl
Q2hhaW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJl
Q2hhaW4uc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAg
ICBpZiAocGNbOF0udS5vcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5l
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0
X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNb
NF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtOTE5LDYgKzkxOSwyNCBA
QCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGRpc3BhdGNoKDMpCiAKIAorbWFjcm8gbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwocHJvcGVydHlPZmZzZXQsIG9iamVj
dEFuZFN0b3JhZ2UsIHRhZywgcGF5bG9hZCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEg
cHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgb2sgZW5kKQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFu
ZFN0b3JhZ2UKKyAgICBsb2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5
W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwg
cHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCitlbmQKKworbWFjcm8gbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXls
b2FkKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlz
SW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRT
dG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAg
ICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBh
Y2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2FkaSBUYWdPZmZzZXQg
LSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zm
c2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdl
Q2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCitl
bmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJl
IGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KQEAg
LTkzMCw5ICs5NDgsNyBAQCBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCiAgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xv
dwogICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgotICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0S25vd25Ob3RGaW5hbCh0MSwgdDAsIHQyLCB0MykKICAgICBsb2FkaSA0W1BDXSwg
dDAKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpAQCAtMTA4NywzMSArMTEwMyw0NCBAQCBfbGxpbnRf
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkKIAogCi1fbGxpbnRfb3Bf
Z2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZv
ciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorIyBvcGNvZGUuIFdlIGRvLCBob3dldmVy
LCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQor
IyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRf
YnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hl
LiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorIyB3ZSB3b3VsZCBo
YXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFn
ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdl
dF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQotICAgICMg
b3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55
dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0
IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCi0gICAgIyB0byB0
YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0
aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4K
ICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAg
ICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0s
IHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgotICAgIHN0b3JlaSB0Mywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQx
KQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MywK
KyAgICAgICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisg
ICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRT
bG93CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICAgICAgICAgIGxvYWRpIFRhZ09m
ZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKKyAgICAgICAgICAgIHN0b3JlaSBz
Y3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZGkgMzJbUENdLCB0MQorICAg
ICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQyLCB0MSkKKyAgICAgICAgICAgIGRpc3Bh
dGNoKDkpCisgICAgICAgIGVuZCkKKworICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkp
CitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9y
YWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9v
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTExMzAsNjggKzExNTksOTYgQEAgX2xsaW50X29w
X2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3B1
dF9ieV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlk
U2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEs
IC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKLSAgICBz
dG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAg
ICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3Jh
dGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQorICAgICAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09m
ZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAg
ICAgICBlbmQpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBwdXRCeUlkKHdpdGhJ
bmxpbmVTdG9yYWdlKQogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAogCi1tYWNybyBwdXRCeUlk
VHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCisKK21hY3JvIHB1dEJ5
SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZbUENdLCB0
MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgogICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQx
LCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAg
bG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0
MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MiwgdDEsIHQyKQotICAgIHdyaXRlQmFycmllcih0MSwgdDIpCi0gICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbdDNdCi0gICAgbG9hZGkgMjRbUENdLCB0MQotICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFt0M10KLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlz
cGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0
MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAg
IGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEsIHQy
KQorICAgICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgICAgICAgICBsb2Fk
aSAyNFtQQ10sIHQxCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAg
ICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gbm9BZGRpdGlvbmFsQ2hl
Y2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAorCittYWNybyBzdHJ1Y3R1cmVDaGFpbkNo
ZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3Ry
dWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90
bworCisgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRw
bnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvcltz
Y3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9r
IGVuZCkKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKy5sb29wOgorICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgYnBu
ZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkcCA0LCBz
Y3JhdGNoCisgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9B
ZGRpdGlvbmFsQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KG5vQWRkaXRpb25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbigKLSAg
ICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAgICAgIGNv
bnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KLSAgICAgICAgCi0gICAgICAgICAgICBsb2FkcCAyOFtQ
Q10sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3Jh
dGNoXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQotICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFn
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCi0gICAgICAgIC5sb29wOgotICAg
ICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0
dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAotICAgICAg
ICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAubG9vcAotICAgICAgICAuZG9uZToKLSAgICAgICAgZW5kKQorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgor
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoT3V0T2ZMaW5l
U3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKQEAgLTEyNjEsOSArMTMxOCw4IEBA
IF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAogICAg
IHN1YmkgMSwgdDAKICAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1D
YWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4
XSwgdDEKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgYWRkaSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX29mZnNldEJhc2VbdDNdLCB0MAorICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZGkgNFtQQ10sIHQw
CiAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjE4MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtNzc4LDYgKzc3OCwyMiBAQCBfbGxpbnRfb3BfaXNfc3RyaW5n
OgogICAgIGRpc3BhdGNoKDMpCiAKIAorbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dEtub3duTm90RmluYWwocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVlKQor
ICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFn
ZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFn
ZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxvYWRwIC04ICogSW5s
aW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwg
dmFsdWUKK2VuZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5
T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB2YWx1ZSkKKyAgICBiaWx0IHByb3BlcnR5T2Zmc2V0
LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3JhZ2UKKyAg
ICBqbXAgLnJlYWR5CisuaXNJbmxpbmU6CisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0OjptX2lubGlu
ZVN0b3JhZ2UgKyBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RBbmRTdG9yYWdlCisu
cmVhZHk6CisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKIG1hY3JvIHJlc29sdmVHbG9i
YWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgOFtQ
QiwgUEMsIDhdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtNzg5LDggKzgwNSw3IEBA
IG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMjRbUEIsIFBDLCA4XSwgc2xvdwogICAgIGxv
YWRpcyAzMltQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0MF0sIHQwCi0gICAgbG9hZHAgW3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQw
CiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwgOF0KICAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQ
QiwgUEMsIDhdLCB0MApAQCAtOTM3LDcgKzk1Miw3IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CittYWNy
byBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
IyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3
ZSBkbyBub3QgbW9kaWZ5IHRoZQogICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cg
Zm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKQEAgLTk0OCwx
OCArOTYzLDMwIEBAIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4
XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRT
bG93KQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCi0gICAg
bG9hZHAgW3QwLCB0Ml0sIHQzCi0gICAgc3RvcmVwIHQzLCBbY2ZyLCB0MSwgOF0KLSAgICBsb2Fk
cCA2NFtQQiwgUEMsIDhdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDEpCi0gICAgZGlzcGF0
Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwK
KyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAg
ICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICBsb2FkcCBbcHJvcGVydHlT
dG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbY2ZyLCB0
MSwgOF0KKyAgICAgICAgICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICB2
YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDEpCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAg
ICBlbmQpCisgICAgICAgICAgICAKKyAgICAub3BHZXRCeUlkU2xvdzoKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgICAgICBkaXNwYXRjaCg5KQor
ZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3aXRoSW5saW5lU3RvcmFn
ZSkKIAotLm9wR2V0QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Z2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCisKK19sbGludF9vcF9nZXRfYnlfaWRfb3V0X29m
X2xpbmU6CisgICAgZ2V0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGg6CkBAIC05NzgsNjUgKzEwMDUsOTMgQEAgX2xsaW50X29wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3B1dF9i
eV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywg
OF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlk
U2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwgdDEKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKLSAgICB3cml0ZUJhcnJpZXIodDApCi0g
ICAgc3RvcmVwIHQwLCBbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlT
dG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0
eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaXMgNDBbUEIsIFBDLCA4
XSwgdDEKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHNjcmF0Y2gpCisg
ICAgICAgICAgICB3cml0ZUJhcnJpZXIodDApCisgICAgICAgICAgICBzdG9yZXAgc2NyYXRjaCwg
W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBl
bmQpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBwdXRCeUlkKHdpdGhJbmxpbmVT
dG9yYWdlKQogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAogCi1tYWNybyBwdXRCeUlkVHJhbnNp
dGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToK
KyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCisKK21hY3JvIHB1dEJ5SWRUcmFu
c2l0aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAzMltQQiwg
UEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0
QnlJZFNsb3cpCiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQyCiAgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVj
a3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykK
ICAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQzCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDEpCi0gICAgd3JpdGVCYXJyaWVyKHQxKQotICAgIHN0b3JlcCB0MSwgW3Qz
XQotICAgIGxvYWRwIDQ4W1BCLCBQQywgOF0sIHQxCi0gICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAor
ICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2Us
IHNjcmF0Y2gpCisgICAgICAgICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3JhZ2UsIHQzCisgICAg
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKKyAgICAgICAgICAgIHdyaXRl
QmFycmllcih0MSkKKyAgICAgICAgICAgIHN0b3JlcCB0MSwgW3QzXQorICAgICAgICAgICAgbG9h
ZHAgNDhbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAor
CittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisK
K21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBj
b25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1
cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgIGxvYWRwIDU2W1BCLCBQQywgOF0sIHNjcmF0
Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9h
ZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJwZXEgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5kb25lCisubG9vcDoKKyAgICBs
b2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAg
YnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkcCA4
LCBzY3JhdGNoCisgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVd
LCBWYWx1ZU51bGwsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1
cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9u
YWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRp
dGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBt
YWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJv
dG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lz
dGVyIGZvciB0aGUgcHJvdG8KLSAgICAgICAgICAgIGxvYWRwIDU2W1BCLCBQQywgOF0sIHNjcmF0
Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkK
LSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2Ny
YXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQotICAgICAgICAgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0s
IFZhbHVlTnVsbCwgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkcCBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAotICAgICAgICAgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKLSAgICAg
ICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Ci0gICAgICAgICAgICBh
ZGRwIDgsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVb
b2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAubG9vcAotICAgICAgICAuZG9uZToKLSAgICAgICAg
ZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoSW5s
aW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291
dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3
aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKQEAgLTExMDYs
OCArMTE2MSw4IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XSwgdDMKICAgICBzdWJpIDEsIHQzCiAgICAgYmlhZXEgdDMsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDFdLCAub3BHZXRCeVBuYW1l
U2xvdwotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAg
bG9hZHAgW3QwLCB0MywgOF0sIHQwCisgICAgYWRkaSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpt
X29mZnNldEJhc2VbdDFdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDMs
IHQwLCB0MCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQogICAgIHN0b3JlcCB0MCwgW2Nm
ciwgdDEsIDhdCiAgICAgZGlzcGF0Y2goNykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
d29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTMgQEAgY29uc3QgTExJbnRSZXR1cm5QQyA9IEFy
Z3VtZW50Q291bnQgKyBUYQogIyBTdHJpbmcgZmxhZ3MuCiBjb25zdCBIYXNoRmxhZ3M4Qml0QnVm
ZmVyID0gNjQKIAorIyBQcm9wZXJ0eSBzdG9yYWdlIGNvbnN0YW50cworaWYgSlNWQUxVRTY0Cisg
ICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gNAorZWxzZQorICAgIGNvbnN0IElubGlu
ZVN0b3JhZ2VDYXBhY2l0eSA9IDYKK2VuZAorCiAjIEFsbG9jYXRpb24gY29uc3RhbnRzCiBpZiBK
U1ZBTFVFNjQKICAgICBjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAxCkBAIC0z
MTIsOCArMzE5LDcgQEAgbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZAog
ICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCBzdHJ1Y3R1
cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQogICAgICAgICBzdG9yZXAgMCwgSlNPYmpl
Y3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQotICAgICAgICBhZGRwIHNpemVvZiBKU09iamVjdCwg
cmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9vdXRP
ZkxpbmVTdG9yYWdlW3Jlc3VsdF0KICAgICBlbmQKIGVuZAogCkBAIC00ODEsNiArNDg3LDIxIEBA
IF9sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKICAgICBkaXNwYXRjaCg1KQogCiAKK21hY3Jv
IHdpdGhJbmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRpb24p
CisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5IHN0b3JhZ2Us
IGFuZCB0aGF0IHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBpcyB1bnVzZWQu
CisgICAgY29udGludWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQorZW5kCisKK21hY3Jv
IHdpdGhPdXRPZkxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51YXRp
b24pCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RdLCBwcm9w
ZXJ0eVN0b3JhZ2UKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIHByb3BlcnR5U3RvcmFnZSByZWdp
c3RlciBub3cgcG9pbnRzIHRvIHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQg
dGhlIG9iamVjdCByZWdpc3RlciBtYXkgYmUgcmV1c2VkCisgICAgIyBpZiB0aGUgb2JqZWN0IHBv
aW50ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorICAgIGNvbnRpbnVhdGlvbihwcm9wZXJ0eVN0
b3JhZ2UsIG9iamVjdCkKK2VuZAorCisKIF9sbGludF9vcF9kZWxfYnlfaWQ6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2RlbF9ieV9pZCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDEy
MTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtNTU1LDcgKzU1NSwxMSBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgIGVuZAog
ICAgIAogICAgIGRlZiBoYW5kbGVYODZBZGQoa2luZCkKLSAgICAgICAgaWYgb3BlcmFuZHMuc2l6
ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAg
dW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8g
UmVnaXN0ZXJJRAogICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMApAQCAtNTY4
LDcgKzU3MiwxMSBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICBlbHNpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAotICAgICAgICAgICAgJGFzbS5w
dXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0K
KyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibGVhI3t4ODZT
dWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICAgICAgIGVuZAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1bmxlc3MgSW1tZWRp
YXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCiAgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3t4ODZPcGVyYW5kcyhraW5kLCBraW5kKX0iCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJl
OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmU7Ci0gICAgICAgIHNpemVfdCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKQEAgLTI2Miw3ICsyNjIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3Ry
dWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogbmFtZWRGdW5jdGlv
blN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KTsgfQotICAgICAgICBzaXplX3QgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25O
YW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICAg
ICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251
bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIHByaXZhdGVO
YW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMjQgKzkzLDU0IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWwKICAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24g
PSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgor
ICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKwor
ICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5lU3RvcmFn
ZSgpOworICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVj
dCgpOworICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdD
QydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1
bm5lZCBwb2ludGVycy4KKyAgICAgICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7CisgICAgICAgIHZp
c2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiksIHN0b3Jh
Z2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8
UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRPZkxpbmVT
dG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKKyAgICB9CisK
KyAgICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVj
a2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworI2VuZGlmCit9CisKK3ZvaWQgSlNGaW5hbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTRmluYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbE9iamVjdCo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0
TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRp
b247CisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZh
bHNlOworI2VuZGlmCisgICAgCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwogCi0gICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5w
cm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgIGlmICh0aGlzT2JqZWN0LT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9y
YWdlLCBzdG9yYWdlU2l6ZSk7Ci0gICAgZWxzZSB7CisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3Jh
Z2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsK
KyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91
dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhp
cyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2Yg
dGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lk
KiB0ZW1wID0gc3RvcmFnZTsKLSAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVv
ZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6
ZSk7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOwogICAgICAgICBzdG9yYWdl
ID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLSAgICAgICAgdGhpc09iamVj
dC0+bV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNr
ZWQpOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2Us
IFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOwogICAgIH0KIAogICAgIGlmICh0aGlzT2JqZWN0
LT5tX2luaGVyaXRvcklEKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
bmhlcml0b3JJRCk7CiAKKyAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICB2aXNpdG9yLmFw
cGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5pbmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKKwog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRN
YXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRp
ZgpAQCAtMTUzLDggKzE4Myw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGEKICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9IGFzT2Jq
ZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1
Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYg
KG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAm
IFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpAQCAtMjcyLDcgKzMwMiw3
IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2UKIAogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIGlmICh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYg
KGlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxE
YXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7CiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udERlbGV0ZSAmJiAhZXhlYy0+Z2xvYmFsRGF0YSgpLmlz
SW5EZWZpbmVPd25Qcm9wZXJ0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB0aGlzT2JqZWN0LT5yZW1vdmVEaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUpOwpAQCAtMzk0LDcgKzQyNCw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJh
YmxlKEV4ZWMKIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFs
dWUpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBpZiAoc3RydWN0dXJl
KCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAoaXNWYWxpZE9mZnNldChzdHJ1
Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBj
b3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3RhdGljIHRhYmxlPyAtIHNob3VsZCBwcm9i
YWJseQpAQCAtNTE2LDIwICs1NDYsMjAgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5j
dGlvbnNGb3JEZQogCiBib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIGlmIChzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKKyAg
ICBpZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2l6ZV90IG9mZnNldDsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVh
YmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBwdXRVbmRl
ZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KSk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChvZmZzZXQgPT0g
aW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHB1dFVuZGVmaW5lZEF0
RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTksMjUgKzU4OSwy
MiBAQCBTdHJ1Y3R1cmUqIEpTT2JqZWN0OjpjcmVhdGVJbmhlcml0b3JJRChKCiAgICAgcmV0dXJu
IG1faW5oZXJpdG9ySUQuZ2V0KCk7CiB9CiAKLVByb3BlcnR5U3RvcmFnZSBKU09iamVjdDo6Z3Jv
d1Byb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXpl
LCBzaXplX3QgbmV3U2l6ZSkKK1Byb3BlcnR5U3RvcmFnZSBKU09iamVjdDo6Z3Jvd091dE9mTGlu
ZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90
IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIC8vIEl0
J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBmdW5jdGlvbiBub3QgcmVseSBvbiBzdHJ1Y3R1cmUoKSwg
c2luY2UKICAgICAvLyB3ZSBtaWdodCBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJhbnNpdGlvbi4K
IAotICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5U3Rv
cmFnZS5nZXQoKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9v
dXRPZkxpbmVTdG9yYWdlLmdldCgpOwogICAgIFByb3BlcnR5U3RvcmFnZSBuZXdQcm9wZXJ0eVN0
b3JhZ2UgPSAwOwogCi0gICAgaWYgKGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICBpZiAo
IW9sZFByb3BlcnR5U3RvcmFnZSkgewogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVt
cCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBk
ZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IG5l
d1Byb3BlcnR5U3RvcmFnZTsKICAgICAgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAudHJ5QWxsb2Nh
dGVTdG9yYWdlKHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSAqIG5ld1NpemUsICZ0
ZW1wKSkKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZSA9
IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0KLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG9sZFNpemU7ICsraSkKLSAgICAgICAgICAgIG5ld1Byb3BlcnR5U3Rv
cmFnZVtpXSA9IG9sZFByb3BlcnR5U3RvcmFnZVtpXTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3Ig
dGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4K
ICAgICAgICAgdm9pZCogdGVtcCA9IG9sZFByb3BlcnR5U3RvcmFnZTsKQEAgLTU5NCw4ICs2MjEs
OCBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCiB7CiAgICAgdW5z
aWduZWQgYXR0cmlidXRlcyA9IDA7CiAgICAgSlNDZWxsKiBjZWxsID0gMDsKLSAgICBzaXplX3Qg
b2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90
Rm91bmQpCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsK
KyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Iob2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zm
c2V0KSwgYXR0cmlidXRlcyk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDE4
ICs3OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1
LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgfTsKIAotI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDYK
LSNlbHNlCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDQKLSNl
bmRpZgotCi1DT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNp
dHkgPj0gMCksIGZpbmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsKKyAgICBjbGFzcyBKU0ZpbmFs
T2JqZWN0OwogCiAgICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOworICAgICAgICBmcmllbmQg
Y2xhc3MgSlNGaW5hbE9iamVjdDsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAKQEAgLTE2OSwyNiArMTY0LDcyIEBAIENPTVBJTEVfQVNTRVJU
KChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24g
b25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgICAgICBKU1ZhbHVlIGdldERpcmVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0
ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFsdWUoKTsK
KyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwg
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGly
ZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIG9m
ZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7Cisg
ICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0
ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAg
ICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTQ2VsbCogc3Bl
Y2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
bik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxp
ZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKLSAg
ICAgICAgc2l6ZV90IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGxvY2F0aW9uKSBjb25zdAorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25zdCB7
IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzSW5saW5lU3RvcmFnZSgpOyB9CisgICAgICAgIENvbnN0
UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2VVbnNhZmUoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvbnN0UHJvcGVydHlTdG9yYWdlPih0aGlz
ICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2VV
bnNhZmUoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gLSBwcm9wZXJ0
eVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJvcGVydHlTdG9y
YWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ug
aW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNJ
bmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VVbnNhZmUo
KTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQorICAgICAgICBQcm9wZXJ0eVN0b3Jh
Z2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsg
fQorCisgICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9y
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICZp
bmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOworICAgICAgICAg
ICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9m
ZnNldCldOworICAgICAgICB9CisKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAg
ICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXRG
b3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVzdWx0OworICAgICAgICAgICAg
c2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZSA9IGxvY2F0aW9uIC0gaW5saW5lU3RvcmFnZVVu
c2FmZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldEluSW5saW5lU3RvcmFnZSA8IHN0YXRpY19j
YXN0PHNpemVfdD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbG9jYXRpb24gLSBvdXRPZkxpbmVTdG9yYWdlKCkgKyBmaXJzdE91dE9m
TGluZU9mZnNldDsKKyAgICAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKQEAgLTIwNSw5ICsyNDYsOSBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yCiAgICAgICAgIGJvb2wgcHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgLy8g
RmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KLSAgICAgICAgSlNWYWx1ZSBn
ZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9y
YWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJv
cGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9Ci0g
ICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CisgICAgICAgIEpTVmFs
dWUgZ2V0RGlyZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyByZXR1cm4g
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Z2V0KCk7IH0KKyAgICAgICAgdm9pZCBwdXREaXJl
Y3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERh
dGEsIHRoaXMsIHZhbHVlKTsgfQorICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zm
c2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5z
ZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApAQCAtMjI4LDI0ICsyNjks
MTYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBi
b29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGlj
RnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAgICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNG
b3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQ
cm9wZXJ0eVN0b3JhZ2UgZ3Jvd1Byb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qg
b2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCByZXN1bHQgPQotICAgICAg
ICAgICAgICAgICFtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKQotICAgICAgICAgICAgICAgIHx8IHN0
YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkgPT0gc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOwotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHNldFByb3BlcnR5U3RvcmFnZShK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2UsIFN0cnVjdHVyZSopOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd091dE9mTGluZVN0b3JhZ2UoSlNHbG9i
YWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKKyAgICAgICAgdm9pZCBz
ZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0
dXJlKik7CiAgICAgICAgIAogICAgICAgICBib29sIHJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nh
cnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAg
ICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNH
bG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgICAgICB2
b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9y
YWdlKCkKKyAgICAgICAgdm9pZCogYWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAmbV9wcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAgICAgICBy
ZXR1cm4gJm1fb3V0T2ZMaW5lU3RvcmFnZTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZmxh
dHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMjYxLDcg
KzI5NCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKTsKLSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOwor
ICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpOwogICAgICAg
ICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5oZXJpdG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtMjcxLDcgKzMwNCw3IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgewogICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8
IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOwogICAgICAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc09iamVjdCgpKTsKQEAgLTI4Nyw3ICszMjAsNyBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAKICAgICAgICAgLy8gVG8g
aW5zdGFudGlhdGUgb2JqZWN0cyB5b3UgbGlrZWx5IHdhbnQgSlNGaW5hbE9iamVjdCwgYmVsb3cu
CiAgICAgICAgIC8vIFRvIGNyZWF0ZSBkZXJpdmVkIHR5cGVzIHlvdSBsaWtlbHkgd2FudCBKU05v
bkZpbmFsT2JqZWN0LCBiZWxvdy4KLSAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOworICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgcmVz
ZXRJbmhlcml0b3JJRCgpCiAgICAgICAgIHsKQEAgLTMwNSwxOSArMzM4LDYgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7
CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVy
dHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9y
YWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7
IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQotCi0gICAgICAgIGNvbnN0IFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zm
c2V0XTsKLSAgICAgICAgfQotCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxv
Y2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAgfQotCiAgICAgICAgIHRl
bXBsYXRlPFB1dE1vZGU+CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNs
b3QmLCBKU0NlbGwqKTsKIApAQCAtMzI3LDcgKzM0Nyw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVy
dHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgU3Ry
dWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBTdG9y
YWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgU3RvcmFnZUJhcnJpZXIgbV9v
dXRPZkxpbmVTdG9yYWdlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2luaGVy
aXRvcklEOwogICAgIH07CiAKQEAgLTM1MywxNCArMzczLDE0IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGlj
aXQgSlNOb25GaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IDApCisgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAg
ICAgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEpOwotICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0
cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVChj
bGFzc0luZm8oKSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzgxLDYgKzQwMSw4IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oRmluYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAg
ICB9CiAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRB
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5saW5l
U3RvcmFnZSgpCkBAIC0zODgsMTEgKzQxMCwxNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuQ29tbW9uKFNsb3RWaXNpdG9y
Jik7CisgICAgICAgIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5h
bE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0g
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAgQVNTRVJU
KHRoaXMtPnN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBh
Y2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFn
ZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VS
VChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIApAQCAtNDAwLDEzICs0MjUsMTMgQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5h
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3Rv
cmFnZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiBtX2lubGluZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9y
YWdlQ2FwYWNpdHldOworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5l
U3RvcmFnZVtJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWV07CiAgICAgfTsKIAogaW5saW5lIEpTRmlu
YWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtNDMxLDkgKzQ1Niw5IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3QKICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmpl
Y3QsIG1faW5saW5lU3RvcmFnZSk7CiB9CiAKLWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkKK2lubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mT3V0
T2ZMaW5lU3RvcmFnZSgpCiB7Ci0gICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwg
bV9wcm9wZXJ0eVN0b3JhZ2UpOworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3Qs
IG1fb3V0T2ZMaW5lU3RvcmFnZSk7CiB9CiAKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNl
dE9mSW5oZXJpdG9ySUQoKQpAQCAtNDcxLDE0ICs0OTYsMTggQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OmlzR2xvYmFsVGhpcygpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gR2xvYmFsVGhpc1R5cGU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0Ojpz
ZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3Jh
Z2Ugc3RvcmFnZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6
c2V0T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3Rv
cmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQoc3RvcmFn
ZSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVXNp
bmdJbmxpbmVTdG9yYWdlKCkKLSAgICAgICAgICAgfHwgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFs
T2JqZWN0OjpzX2luZm8gJiYgc3RhdGljX2Nhc3Q8dm9pZCo+KHN0b3JhZ2UpID09IHN0YXRpY19j
YXN0PHZvaWQqPih0aGlzICsgMSkpKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSk7Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEsIHRoaXMs
IHN0b3JhZ2UpOworICAgIG1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywg
c3RvcmFnZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxNiw5ICs1NDUsOSBAQCBp
bmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2Jq
ZWN0KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSkKK2lubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTQ2VsbChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlz
LCBpbmxpbmVTdG9yYWdlKQorICAgICwgbV9vdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHRo
aXMsIDApCiB7CiB9CiAKQEAgLTU0MiwxOSArNTcxLDYgQEAgaW5saW5lIFN0cnVjdHVyZSogSlNP
YmplY3Q6OmluaGVyaXRvcklEKAogICAgIHJldHVybiBjcmVhdGVJbmhlcml0b3JJRChnbG9iYWxE
YXRhKTsKIH0KIAotaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmlubGluZVN0b3JhZ2VDYXBhY2l0
eSgpIGNvbnN0Ci17Ci0gICAgaWYgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0OjpzX2lu
Zm8pCi0gICAgICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eTsK
LSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjppc1VzaW5nSW5saW5l
U3RvcmFnZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
Pj0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBwcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpOwotfQotCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKIHsKICAgICByZXR1
cm4gY2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKQEAgLTYxMSwxMCArNjI3LDEwIEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRl
clByb3BlcnRpZXMoKSkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhh
c0hhc2goKQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFz
SGFzaCgpCiAgICAgICAgICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpu
b3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAg
ICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQo
KTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4ICs2OTIsOCBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVjdHVyZSgp
LT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsK
ICAgICAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgc2l6ZV90
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJy
ZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBpZiAob2Zm
c2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1
dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3Bl
Y2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAg
Ly8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAg
ICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKQEAgLTcwMCwxMyArNzE2LDE0IEBAIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgaWYgKChtb2RlID09IFB1
dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgp
OwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJvcGVydHlTdG9yYWdlKCkp
Ci0gICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1
Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICBpZiAoc3RydWN0dXJl
KCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3U3RvcmFn
ZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5vdXRPZkxp
bmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNh
cGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljRnVuY3Rpb24pOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3
U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2Jh
bERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAotICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICB2YWxp
ZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZz
ZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQgb24gc2V0TmV3UHJvcGVydHkgY2Fs
bCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQpAQCAtNzE0LDE1ICs3MzEs
MTYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0OwotICAgIHNpemVfdCBjdXJy
ZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZSh0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uLCBvZmZzZXQpKSB7Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0g
cHJvcGVydHlTdG9yYWdlKCk7IAotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2Ug
PSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLQotICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAgc2V0UHJv
cGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7CisgICAgICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOyAKKyAgICAg
ICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
CisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworCisg
ICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0
KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHBy
b3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNwZWNpZmljIHZhbHVlcyBhcmUgbm90IGN1cnJlbnRs
eSBjYWNoYWJsZSwKICAgICAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNoYWJs
ZSBzdGF0ZS4KQEAgLTczNCw3ICs3NTIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoCiAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxs
KiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBp
ZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1v
ZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTc2OCw3ICs3ODYsOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoCiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7CiAgICAgCi0g
ICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdl
SWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHB1dERpcmVjdE9mZnNl
dChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTc4MSwyMiArODAwLDIyIEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5ld1N0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgCi0gICAgaWYgKG9sZENhcGFjaXR5ID09
IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgIGlmIChvbGRD
YXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAg
c2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVy
dHlTdG9yYWdlKAotICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ug
bmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKAorICAgICAgICBnbG9iYWxEYXRhLCBv
bGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBzZXRP
dXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVyZSk7CiB9
CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFn
ZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2Fy
eSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCksIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQpAQCAtODI0LDExICs4NDMsMTEgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChK
U0dsb2JhbAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlz
R2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKLSAgICBQcm9wZXJ0
eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAgIGlmIChzdHJ1Y3R1
cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgbmV3U3RvcmFnZSA9
IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdQcm9wZXJ0eVN0b3JhZ2VT
aXplKCkpOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENh
bGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEs
IG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFn
ZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93
T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0
b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVj
dHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRDYWxsYWJsZU9i
amVjdCh2YWx1ZSkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3Rv
cmFnZSwgc3RydWN0dXJlKCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZz
ZXQsIHZhbHVlKTsKIH0KIApAQCAtOTA2LDggKzkyNSw2IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6
OnB1dEJ5SW5kZXgoRXhlY1N0YXQKICAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJ
bmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwog
fQogCi0vLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQogQUxXQVlTX0lOTElORSBKU09iamVjdCogUmVnaXN0ZXI6OmZ1bmN0aW9uKCkgY29uc3QKIHsK
ICAgICBpZiAoIWpzVmFsdWUoKSkKQEAgLTkyMiw2ICs5MzksMzIgQEAgQUxXQVlTX0lOTElORSBS
ZWdpc3RlciBSZWdpc3Rlcjo6d2l0aENhbAogICAgIHJldHVybiByOwogfQogCisvLyBUaGlzIGlz
IGEgaGVscGVyIGZvciBwYXRjaGluZyBjb2RlIHdoZXJlIHlvdSB3YW50IHRvIGVtaXQgYSBsb2Fk
IG9yIHN0b3JlIGFuZAorLy8gdGhlIGJhc2UgaXM6CisvLyBGb3IgaW5saW5lIG9mZnNldHM6IGEg
cG9pbnRlciB0byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZSBwb2ludGVyLgorLy8gRm9yIG91dC1v
Zi1saW5lIG9mZnNldHM6IHRoZSBiYXNlIG9mIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlLgoraW5s
aW5lIHNpemVfdCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGlmIChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpOworICAgIHJldHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLSBK
U09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkgKyBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lubGluZSBpbnQgaW5k
ZXhSZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0
T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uob2Zmc2V0KTsKKyAgICBBU1NFUlQoIShKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9y
YWdlKCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXRJ
bklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0
KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBK
U09iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBK
U1Byb3BlcnR5TmFtZUl0CiAgICAgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3RzID0gMDsKICAgICBp
ZiAoIW8tPnN0cnVjdHVyZSgpLT5oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpICYmICFvLT5z
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCiAgICAgICAgICYmICFvLT5z
dHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAmJiAhby0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQotICAgICAgICBudW1DYWNo
ZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAg
ICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUo
KTsKICAgICAKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1l
cy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3RzKTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSk7CisgICAganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lcy5kYXRh
KCksIG8pOwogCiAgICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAg
ICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0Nyw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAg
ICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3Qg
bnVtQ2FjaGVhYmxlU2xvdCkKLSAgICAgICAgewotICAgICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVj
LCBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIG51bUNhY2hlYWJsZVNsb3QpOwotICAgICAgICAgICAg
aXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSk7Ci0g
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgIApAQCAtNjMsMTEgKzU3LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwgaW50JiBv
ZmZzZXQpCisgICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBQcm9wZXJ0eU9mZnNldCYg
b2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaSA+PSBtX251bUNhY2hlYWJsZVNs
b3RzKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG9mZnNldCA9
IGk7CisgICAgICAgICAgICBvZmZzZXQgPSBpICsgbV9vZmZzZXRCYXNlOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtODgsMTIgKzgyLDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhKQorICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1l
VmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9qc1N0cmluZ3NTaXplOyArK2kpCiAg
ICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7
CisgICAgICAgICAgICBtX29mZnNldEJhc2UgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5maXJzdFZh
bGlkT2Zmc2V0KCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC0xMDUsNiArMTAwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVT
bG90czsKICAgICAgICAgdWludDMyX3QgbV9qc1N0cmluZ3NTaXplOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBtX29mZnNldEJhc2U7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxV
bmtub3duPiA+IG1fanNTdHJpbmdzOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDgg
KzEzMCw4IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBm
b3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgc2l6ZV90
IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNW
YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICByZXR1cm4ganNBZGRTbG93Q2FzZShjYWxsRnJhbWUsIHYxLCB2Mik7CiAgICAgfQog
Ci0gICAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgc2xvdE9mZnNldCkKKyAgICBpbmxpbmUgc2l6ZV90IG5v
cm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlPZmZzZXQmIHNsb3RPZmZzZXQpCiAgICAgewogICAgICAgICBKU0NlbGwqIGNlbGwgPSBiYXNl
LmFzQ2VsbCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsNyArMTA1LDYgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFya2Vycwog
ICAgIHJldHVybiBjcHVzVG9Vc2U7CiB9CiAKLQogT3B0aW9uczo6RW50cnkgT3B0aW9uczo6c19v
cHRpb25zW09wdGlvbnM6Om51bWJlck9mT3B0aW9uc107CiAKIC8vIFJlYWxpemUgdGhlIG5hbWVz
IGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgpAQCAtMTE5LDExICsxMTgsMTEgQEAgY29uc3QgT3B0
aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aQogdm9pZCBPcHRpb25zOjppbml0aWFsaXpl
KCkKIHsKICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0aGVpciBk
ZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgRk9SX0VBQ0hfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVm
YXVsdFZhbHVlXykgXAorI2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZh
dWx0VmFsdWVfKSAgICBcCiAgICAgbmFtZV8oKSA9IGRlZmF1bHRWYWx1ZV87CiAgICAgSlNDX09Q
VElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgotCisgICAgICAg
IAogICAgIC8vIEFsbG93IGVudmlyb25tZW50IHZhcnMgdG8gb3ZlcnJpZGUgb3B0aW9ucyBpZiBh
cHBsaWNhYmxlLgogICAgIC8vIFRoZSBldm4gdmFyIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUg
b3B0aW9uIHByZWZpeGVkIHdpdGgKICAgICAvLyAiSlNDXyIuCkBAIC0xMzIsOSArMTMxLDEyIEBA
IHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlz
dGljKG5hbWVfKCksICJKU0NfIiAjbmFtZV8pOwogICAgIEpTQ19PUFRJT05TKEZPUl9FQUNIX09Q
VElPTikKICN1bmRlZiBGT1JfRUFDSF9PUFRJT04KLSAgICAKICNlbmRpZiAvLyBSVU5fVElNRV9I
RVVSSVNUSUNTCiAKKyNpZiAwCisgICAgOyAvLyBEZWNvbmZ1c2UgZWRpdG9ycyB0aGF0IGRvIGF1
dG8gaW5kZW50YXRpb24KKyNlbmRpZgorICAgIAogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aGVy
ZSBuZWVkZWQgYW5kIG1ha2UgY29ycmVjdGlvbnMgdG8gdGhlIG9wdGlvbnM6CiAgICAgQVNTRVJU
KHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0
aW1pemVBZnRlcldhcm1VcCgpKTsKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRl
cldhcm1VcCgpID49IHRocmVzaG9sZEZvck9wdGltaXplU29vbigpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAko
cmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gK
IAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KQEAgLTcy
LDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAK
IHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0gICAgdW5z
aWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7CiAKLSAg
ICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkK
ICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwg
YXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc0LDggKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlZCB0byBtYWludGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVudHJpZXMgaW4gdGhlIHByb3Bl
cnR5IHN0b3JhZ2UuCiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgYm9vbCBo
YXNEZWxldGVkT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgpOwotICAg
IHZvaWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIFByb3BlcnR5T2Zm
c2V0IGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQoUHJvcGVy
dHlPZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0IG5leHRPZmZzZXQoSlNUeXBlKTsK
IAogICAgIC8vIENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMg
YXQgbGVhc3QgdGhlIGNhcGFjaXR5IHByb3ZpZGVkLgogICAgIFBhc3NPd25QdHI8UHJvcGVydHlU
YWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBh
Y2l0eSk7CkBAIC0yMzAsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCogbV9pbmRl
eDsKICAgICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50
OwotICAgIE93blB0cjwgVmVjdG9yPHVuc2lnbmVkPiA+IG1fZGVsZXRlZE9mZnNldHM7CisgICAg
T3duUHRyPCBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKIAogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNaW5pbXVtVGFibGVTaXplID0gMTY7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7CkBAIC0yNjQsOSArMjY3LDkgQEAg
aW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0KIAogICAgIC8v
IENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4q
IG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOworICAg
IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2Rl
bGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAg
ICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5l
dyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlu
bGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCog
b3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3Ro
ZXIpCkBAIC0yODgsOSArMjkxLDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9y
LgotICAgIFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2Rl
bGV0ZWRPZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVs
ZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhl
ckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3
IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxl
dGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRl
bGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjp+UHJvcGVydHlUYWJs
ZSgpCkBAIC00NjksMjAgKzQ3MiwzMSBAQCBpbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpoYXNE
ZWxldGVkT2ZmCiAgICAgcmV0dXJuIG1fZGVsZXRlZE9mZnNldHMgJiYgIW1fZGVsZXRlZE9mZnNl
dHMtPmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OmdldERl
bGV0ZWRPZmZzZXQoKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6OmdldERl
bGV0ZWRPZmZzZXQoKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZGVsZXRlZE9mZnNldHMt
Pmxhc3QoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0ZWRPZmZzZXRzLT5s
YXN0KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwogICAgIHJldHVybiBv
ZmZzZXQ7CiB9CiAKLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQo
dW5zaWduZWQgb2Zmc2V0KQoraW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9m
ZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRPZmZzZXRz
KQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25l
ZD4pOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4pOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOwogfQog
CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChKU1R5cGUg
dHlwZSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQorICAgICAgICByZXR1cm4gZ2V0
RGVsZXRlZE9mZnNldCgpOworICAgIAorICAgIGlmICh0eXBlID09IEZpbmFsT2JqZWN0VHlwZSkK
KyAgICAgICAgcmV0dXJuIHNpemUoKTsKKyAgICAKKyAgICByZXR1cm4gc2l6ZSgpICsgZmlyc3RP
dXRPZkxpbmVPZmZzZXQ7Cit9CisKIGlubGluZSBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFBy
b3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVy
LCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQobmV3Q2FwYWNpdHkgPj0gbV9r
ZXlDb3VudCk7CkBAIC00OTksNyArNTEzLDcgQEAgaW5saW5lIHNpemVfdCBQcm9wZXJ0eVRhYmxl
OjpzaXplSW5NZW1vcgogewogICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2YoUHJvcGVydHlUYWJs
ZSkgKyBkYXRhU2l6ZSgpOwogICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQotICAgICAgICByZXN1
bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQpKTsK
KyAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICogc2l6ZW9m
KFByb3BlcnR5T2Zmc2V0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU9mZnNldF9oCisjZGVmaW5l
IFByb3BlcnR5T2Zmc2V0X2gKKworI2luY2x1ZGUgIkpTVHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2RlZmluZSBJTkxJ
TkVfU1RPUkFHRV9DQVBBQ0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJvcGVydHlPZmZz
ZXQ7CisKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0gLTE7Citz
dGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gSU5MSU5F
X1NUT1JBR0VfQ0FQQUNJVFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZmlyc3RPdXRP
ZkxpbmVPZmZzZXQgPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKKy8vIERlY2xhcmUgYWxsIG9m
IHRoZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IHRlbmQgdG8gZG8gZm9yd2FyZCBjYWxscy4KK2lu
bGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSB2b2lkIGNoZWNr
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0LCBKU1R5cGUpOworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZz
ZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
KTsKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBi
b29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3Qgb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3Qgb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3Qgb2Zmc2V0
SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCk7CitpbmxpbmUgc2l6ZV90IG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBz
aXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7
CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3BlcnR5T2Zm
c2V0LCBKU1R5cGUpOworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlPZmZzZXRG
b3IoSlNUeXBlKTsKKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPj0g
aW52YWxpZE9mZnNldCk7Cit9CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIEFTU0VSVChvZmZzZXQgPj0gaW52YWxpZE9mZnNl
dCk7CisgICAgQVNTRVJUKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0CisgICAgICAgICAgIHx8IHR5
cGUgPT0gRmluYWxPYmplY3RUeXBlCisgICAgICAgICAgIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KG9m
ZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNWYWxpZE9m
ZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQsIHR5
cGUpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgYm9v
bCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNl
dChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldDsKK30KKworaW5s
aW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCA8IGlubGluZVN0b3JhZ2VDYXBh
Y2l0eTsKK30KKworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuICFpc0lubGlu
ZU9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFn
ZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsK
KyAgICBBU1NFUlQoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNldDsK
K30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNTRVJUKGlz
T3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBvZmZzZXQgLSBmaXJzdE91dE9m
TGluZU9mZnNldDsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9yYWdl
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0
KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworICAgIHJl
dHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIHNpemVf
dCBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0IDwgZmlyc3RP
dXRPZkxpbmVPZmZzZXQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvZmZzZXQgLSBm
aXJzdE91dE9mTGluZU9mZnNldCArIDE7Cit9CisKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZTbG90
c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAg
ICBjaGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGlmICh0eXBlID09IEZpbmFsT2JqZWN0
VHlwZSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIDE7CisgICAgcmV0dXJuIG51bWJlck9mT3V0
T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9m
ZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUg
dHlwZSkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGlmICh0eXBlICE9
IEZpbmFsT2JqZWN0VHlwZSAmJiBvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgcmV0
dXJuIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgIHJldHVybiBvZmZzZXQgKyAxOworfQorCitp
bmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUgdHlwZSkK
K3sKKyAgICByZXR1cm4gbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKGludmFsaWRPZmZzZXQsIHR5cGUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFByb3BlcnR5T2Zmc2V0X2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiUHJvcGVydHlP
ZmZzZXQuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC04OSw3ICs5MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUgY2FjaGVkUHJvcGVydHlUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGU7IH0KICAgICAgICAgYm9vbCBpc0Nh
Y2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlICE9IFVuY2FjaGVh
YmxlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkUHJvcGVydHlUeXBlID09IFZhbHVlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNoZWRPZmZz
ZXQoKSBjb25zdAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gbV9vZmZzZXQ7CkBAIC0xMDQsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgc2l6ZV90IG9m
ZnNldCkKKyAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZh
bHVlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VCh2YWx1ZSk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gSlNDX1ZBTFVFX01BUktFUjsKQEAg
LTE2MCw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZGF0YS5nZXR0
ZXJGdW5jID0gZ2V0dGVyRnVuYzsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FjaGVh
YmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5z
aWduZWQgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1
ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdldHRlckZ1bmMpOwogICAgICAgICAgICAg
bV9nZXRWYWx1ZSA9IEdFVFRFUl9GVU5DVElPTl9NQVJLRVI7CkBAIC0yMDYsNyArMjA3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENsZWFyIG9mZnNldCBl
dmVuIGluIHJlbGVhc2UgYnVpbGRzLCBpbiBjYXNlIHRoaXMgUHJvcGVydHlTbG90IGhhcyBiZWVu
IHVzZWQgYmVmb3JlLgogICAgICAgICAgICAgLy8gKEZvciBvdGhlciBkYXRhIG1lbWJlcnMsIHdl
IGRvbid0IG5lZWQgdG8gY2xlYXIgYW55dGhpbmcgYmVjYXVzZSByZXVzZSB3b3VsZCBtZWFuaW5n
ZnVsbHkgb3ZlcndyaXRlIHRoZW0uKQotICAgICAgICAgICAgbV9vZmZzZXQgPSAwOworICAgICAg
ICAgICAgbV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAgICAgICAgbV9jYWNoZWRQcm9w
ZXJ0eVR5cGUgPSBVbmNhY2hlYWJsZTsKICAgICAgICAgfQogCkBAIC0yMzIsNyArMjMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICAgICAgSlNWYWx1
ZSBtX3RoaXNWYWx1ZTsKIAotICAgICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUgbV9jYWNoZWRQ
cm9wZXJ0eVR5cGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHV0UHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwgc2l6ZV90
IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNl
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9
IEV4aXN0aW5nUHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAgICAg
ICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldE5ld1By
b3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldE5l
d1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5OwogICAgICAgICAgICAgbV9iYXNl
ID0gYmFzZTsKQEAgLTY0LDcgKzY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9v
bCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgICAg
ICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFVuY2FjaGFibGU7
IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKGlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAg
ICB9CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIFR5cGUgbV90eXBlOwogICAgICAgICBKU09iamVjdCogbV9iYXNlOwotICAgICAgICBzaXpl
X3QgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgICAgICBi
b29sIG1faXNTdHJpY3RNb2RlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDggKzE1Niw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAg
ICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSkKICAgICAsIG1fY2xh
c3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlh
bGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkodHlwZUluZm8u
aXNGaW5hbE9iamVjdCgpID8gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgOiAw
KQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFjaXR5KDAp
CisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChO
b25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkK
ICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTE3OSw4ICsxNzks
OCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX3By
b3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBqc051bGwoKSkKICAgICAsIG1fY2xhc3NJbmZvKCZz
X2luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hp
bmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KDApCi0gICAgLCBtX29mZnNldChu
b09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0KGlu
dmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkK
ICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMjAwLDggKzIwMCw4IEBAIFN0cnVjdHVyZTo6U3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEs
IHRoaXMsIHByZXZpb3VzLT5zdG9yZWRQcm90b3R5cGUoKSkKICAgICAsIG1fY2xhc3NJbmZvKHBy
ZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5p
dGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkocHJldmlv
dXMtPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpCi0gICAgLCBtX29mZnNldChub09mZnNldCkK
KyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkocHJldmlvdXMtPm1fb3V0T2ZMaW5lQ2FwYWNpdHkp
CisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChw
cmV2aW91cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxl
KGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZpb3VzLT5tX2hh
c0dldHRlclNldHRlclByb3BlcnRpZXMpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3By
ZXZpb3VzKTsKIAotICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3By
b3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbV9vZmZzZXQgKyAxKTsKKyAgICAgICAg
ICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGds
b2JhbERhdGEsIDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJ
bmZvLnR5cGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjQ3LDcg
KzI0Nyw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9
CiAKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAo
bV9vZmZzZXQgKyAxKTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAKICAgICBmb3IgKHB0
cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkgewogICAgICAg
ICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMjU2LDIxICsyNTYsMjEgQEAgdm9pZCBT
dHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIH0KIAotaW5saW5lIHNp
emVfdCBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSkK
K2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVu
dENhcGFjaXR5KQogewogICAgIGlmICghY3VycmVudENhcGFjaXR5KQogICAgICAgICByZXR1cm4g
NDsKICAgICByZXR1cm4gY3VycmVudENhcGFjaXR5ICogMjsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6
Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCit2b2lkIFN0cnVjdHVyZTo6Z3Jvd091dE9m
TGluZUNhcGFjaXR5KCkKIHsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ID0gbmV4dFBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIG1f
b3V0T2ZMaW5lQ2FwYWNpdHkgPSBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZM
aW5lQ2FwYWNpdHkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdQcm9wZXJ0
eVN0b3JhZ2VTaXplKCkKK3NpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eSgpCiB7Ci0gICAgcmV0dXJuIG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gbmV4dE91dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eShtX291dE9mTGluZUNhcGFjaXR5KTsKIH0KICAKIHZvaWQgU3RydWN0dXJl
OjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU3RydWN0
dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5j
bGVhcigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKQEAgLTI5Niw3
ICsyOTYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAg
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRpb24t
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlmIChzcGVjaWZpY1Zh
bHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBzcGVjaWZpY1ZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRp
b24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3Rp
bmdUcmFuc2l0aW9uLT5tX29mZnNldCwgc3RydWN0dXJlLT5tX3R5cGVJbmZvLnR5cGUoKSk7CiAg
ICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7CiAgICAgICAgIHJl
dHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsKIH0KIAot
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYg
b2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmlj
IGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAg
IC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBh
bmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSB0
b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAgIG9mZnNldCA9
IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5zaXRpb24tPnByb3Bl
cnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
Ci0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
KyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRpb24tPm91
dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogICAgIApAQCAt
MzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBp
ZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRy
YW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5zaXRpb24tPmdyb3dP
dXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBvZmZzZXQ7
CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwgdHJhbnNp
dGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZz
ZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTggKzU0OCwxOSBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAgICAgICAgc2l6
ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAgICAgICAgVmVj
dG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAKICAgICAgICAg
dW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zmc2V0ID0gZmly
c3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIFByb3BlcnR5
VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAgICAgIGZv
ciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+YmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1ZXNbaV0gPSBv
YmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAgICAgLy8gVXBk
YXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZzZXRzCi0gICAg
ICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zmc2V0ID0gaSAr
IGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDb3B5IHRoZSBv
cmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlvbnMKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykKLSAgICAgICAg
ICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVlc1tpXSk7Cisg
ICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBmaXJzdE9mZnNl
dCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVhckRlbGV0
ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAotc2l6ZV90IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3OSwxMyArNTgw
LDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4KICAgICAKICAg
ICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKHBy
b3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAg
IGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4gb3V0T2ZMaW5lQ2Fw
YWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgcmV0dXJuIG9m
ZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoIW1f
ZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAgICBzaXplX3Qgb2Zm
c2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAgICByZXR1
cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpwaW4oKQpAQCAt
NjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNv
cAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFi
bGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25lcikK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFi
bGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFi
bGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3du
ZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSkpOwogfQogCi1zaXplX3Qg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkK
K1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9
PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgUHJvcGVydHlN
YXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1lLnVpZCgp
KS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsK
KyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBhdHRyaWJ1dGVzID0gZW50cnkt
PmF0dHJpYnV0ZXM7CiAgICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmdl
dCgpOwpAQCAtNjg1LDkgKzY4NSw5IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5j
dGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1zaXpl
X3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewotICAgIEFTU0VSVChn
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBub3RGb3VuZCk7CisgICAgQVNTRVJUKCFK
U0M6OmlzVmFsaWRPZmZzZXQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsKIAogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAt
Njk4LDEyICs2OTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xv
CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKCk7
CiAKLSAgICB1bnNpZ25lZCBuZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5o
YXNEZWxldGVkT2Zmc2V0KCkpCi0gICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+
Z2V0RGVsZXRlZE9mZnNldCgpOwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9w
ZXJ0eVRhYmxlLT5zaXplKCk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gbV9wcm9w
ZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1fcHJvcGVy
dHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdP
ZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDcgKzcwNiw3IEBA
IHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICByZXR1cm4gbmV3
T2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC03MjQsNyArNzE5
LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcgogICAgIGlmICgh
cG9zaXRpb24uZmlyc3QpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIHNpemVfdCBv
ZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CiAKICAgICBtX3Byb3BlcnR5VGFibGUtPnJlbW92
ZShwb3NpdGlvbik7CiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KG9mZnNl
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYpOworICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAgLTEw
MywzMiArMTAzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzRnJvemVuKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgICAgIGJvb2wgZGlkVHJhbnNpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQotICAgICAgICBib29sIHB1dFdpbGxHcm93
UHJvcGVydHlTdG9yYWdlKCkKKyAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd091dE9mTGluZVN0b3Jh
Z2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSA+PSBwcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKG91dE9m
TGluZUNhcGFjaXR5KCkgPj0gb3V0T2ZMaW5lU2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
dXJyZW50U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IGN1cnJlbnRTaXpl
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gcHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRTaXplID09IG91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpID49IG1fcHJvcGVydHlUYWJs
ZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFi
bGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
ID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5VGFibGUtPnNpemUoKSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAg
ICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXpl
KCkpOworICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHRvdGFs
U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IHN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKTsgCisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHko
KTsgCiAKICAgICAgICAgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBKU09iamVjdCopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAg
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
dm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBA
IC0xNDksMTggKzE0OSwxMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNo
YWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIFN0cnVj
dHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0
dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBt
X3ByZXZpb3VzLmdldCgpOworICAgICAgICB9CiAgICAgICAgIGJvb2wgdHJhbnNpdGl2ZWx5VHJh
bnNpdGlvbmVkRnJvbShTdHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCk7CiAKLSAgICAgICAgdm9p
ZCBncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OyB9Ci0gICAg
ICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiAobV9wcm9wZXJ0eVRhYmxlID8g
bV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9vZmZzZXQgKyAxKSk7IH0KLSAgICAgICAgc2l6ZV90IGlubGluZVN0b3JhZ2VDYXBh
Y2l0eSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7
Ci0KLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAg
ICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5
TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAg
ICAgICB2b2lkIGdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOworICAgICAgICB1bnNpZ25lZCBvdXRP
ZkxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9v
dXRPZkxpbmVDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVT
aXplRm9yS25vd25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX3R5cGVJbmZvLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAg
aWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6
ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAg
ICAgIGlmICh0b3RhbFNpemUgPCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVt
YmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9IEZp
bmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsK
KyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0
eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkg
PSB0aGlzLT5pbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUg
PCBpbmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0
KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBlKCkgPT0g
RmluYWxPYmplY3RUeXBlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2Uo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lU2l6ZUZv
cktub3duRmluYWxPYmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
bV90eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAxOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3du
RmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VT
aXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9v
ZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1
cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAg
ICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHNpemUgLSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgpCisgICAgICAgICAgICAgICAgJiYgb2Zmc2V0IDw9IGxh
c3RWYWxpZE9mZnNldCgpOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdl
dChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAg
IGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0
dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRP
bmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsy
NzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxl
UHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7
IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9m
ZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1f
c3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENv
dW50OyB9CkBAIC0yNzMsOCArMzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGlj
dGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAg
ICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6
ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3Zl
KFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25l
ZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMw
MSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3Vu
dCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2Yg
dHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBz
aXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICBy
ZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAg
ICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZv
LnR5cGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICs0
MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4
VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZz
ZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5j
dGlvblRocmFzaENvdW50ID0gMzsKIAogICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAt
MzM2LDEwICs0MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBtdXRh
YmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKIAotICAg
ICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OworICAgICAgICB1aW50MzJf
dCBtX291dE9mTGluZUNhcGFjaXR5OwogCiAgICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFj
Y291bnQgZm9yIGFub255bW91cyBzbG90cwotICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogCiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFy
eUtpbmQgOiAyOwogICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAg
LTM1MywyNiArNDUyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0
YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1
cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYg
KCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAg
ICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBl
bnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0Owot
ICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAot
ICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8p
OwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7
CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUu
aW1wbCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5v
dEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9m
ZnNldDsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJl
T3JVbmRlZmluZWQoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="159030"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150835</attachid>
            <date>2012-07-04 12:58:23 -0700</date>
            <delta_ts>2012-07-04 12:59:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_17.diff</filename>
            <type>text/plain</type>
            <size>262307</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDYgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1wbEA0
QEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxANEBA
WgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2Jh
bFByb3BlcnR5SW5mb0AxMkBIQFoKQEAgLTIxNSw3ICsyMTIsNiBAQCBFWFBPUlRTCiAgICAgP2ds
b2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgogICAgID9n
bG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCiAgICAgP2dyb3dASGFuZGxlU2V0QEpT
Q0BAQUFFWFhaCi0gICAgP2dyb3dQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlNDQEBRQUVQQVY/
JFdyaXRlQmFycmllckJhc2VAVzRVbmtub3duQEpTQ0BAQDJAQUFWSlNHbG9iYWxEYXRhQDJASUlA
WgogICAgID9oYXNJbnN0YW5jZUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVA
MkBWSlNWYWx1ZUAyQDJAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFCRV9OUEFW
RXhlY1N0YXRlQDJASUBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBWUHJvcGVydHlOYW1lQDJAQFoKQEAgLTMyOCw3ICszMjQsNiBAQCBFWFBPUlRT
CiAgICAgP3N0b3BQcm9maWxpbmdAUHJvZmlsZXJASlNDQEBRQUU/QVY/JFBhc3NSZWZQdHJAVlBy
b2ZpbGVASlNDQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKICAgICA/c3Rv
cFNhbXBsaW5nQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhYWgogICAgID9zdWJzdHJpbmdTaGFyaW5n
SW1wbEBVU3RyaW5nQEpTQ0BAUUJFP0FWMTJASUlAWgotICAgID9zdWdnZXN0ZWROZXdQcm9wZXJ0
eVN0b3JhZ2VTaXplQFN0cnVjdHVyZUBKU0NAQFFBRUlYWgogICAgID9zd2VlcGVyQEhlYXBASlND
QEBRQUVQQVZJbmNyZW1lbnRhbFN3ZWVwZXJAMkBYWgogICAgID9zeW50aGVzaXplUHJvdG90eXBl
QEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3Ro
aXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFhaCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEwOTQsNiArMTA5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFByb3BlcnR5T2Zmc2V0Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1
bnRpbWVcUHJvcGVydHlTbG90LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTIyMyw2ICsyMjMsNyBAQAogCQkwRkY0Mjc2NTE1OTFBMUNFMDA0Q0I5RkYgLyog
REZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkY0Mjc2MjE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGNDI3NzEx
NTkyNzVENTAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZG
IC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovOyB9OwogCQkwRkY0Mjc3MjE1OTI3NUQ4MDA0
Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkYxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVH
bG9iYWxTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkY3MTY4QzE1QTNCMjM1MDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcxNjhBMTVBM0Iy
MzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjkyMkQ0MTRGNDZCNDEwMDQxQTI0RSAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi87IH07CiAJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZG
Qzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1
ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05NTcsNiArOTU4LDcgQEAKIAkJMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rp
c2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEaXNhc3Nl
bWJsZXIuaDsgcGF0aCA9IGRmZy9ERkdEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0
dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZGMTU5Mjc1
RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5T2Zmc2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBo
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA3LDYgKzIxMDksNyBAQAog
CQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKIAkJCQk2
NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAogCQkJ
CTY1NDAwQzEwMEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLAorCQkJ
CTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovLAogCQkJCTY1
NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLAogCQkJCTY1NjIx
RTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQk2NUMwMkZCQjA2
Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovLApAQCAtMjgxMSw2ICsyODE0LDcgQEAKIAkJ
CQkwRkY0Mjc0QjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkY0Mjc2NTE1OTFBMUNFMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkY0Mjc3MjE1OTI3NUQ4MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3Bl
cnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAxOCw2ICsxMDE4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX0xEUl9pbW1fVDMs
IHJuLCBydCwgaW1tLmdldFVJbnQxMigpKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGxkcldpZGU4Qml0SW1tZWRpYXRlKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4s
IHVpbnQ4X3QgaW1tZWRpYXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lz
dGVyczo6cGMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIo
T1BfTERSX2ltbV9UMywgcm4sIHJ0LCBpbW1lZGlhdGUpOworICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHJDb21wYWN0KFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRo
dW1iSW1tZWRpYXRlIGltbSkKICAgICB7CkBAIC0yMTE3LDYgKzIxMjMsNDYgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIDY7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7Cisg
ICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1
Y3Rpb25TdGFydCk7CisgICAgICAgIHN3aXRjaCAocHRyWzBdICYgMHhGRkYwKSB7CisgICAgICAg
IGNhc2UgT1BfTERSX2ltbV9UMzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9Q
X0FERF9pbW1fVDM6CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweEYwMDApKTsKKyAg
ICAgICAgICAgIHB0clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfTERS
X2ltbV9UMzsKKyAgICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHgwRjAwKSA8PCA0Owor
ICAgICAgICAgICAgcHRyWzFdICY9IDB4RjBGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICAgICAgY2FjaGVGbHVzaChwdHIsIHNpemVvZih1aW50MTZfdCkgKiAyKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIHN3
aXRjaCAocHRyWzBdICYgMHhGRkYwKSB7CisgICAgICAgIGNhc2UgT1BfTERSX2ltbV9UMzoKKyAg
ICAgICAgICAgIEFTU0VSVCghKHB0clsxXSAmIDB4MEYwMCkpOworICAgICAgICAgICAgcHRyWzBd
ICY9IDB4MDAwRjsKKyAgICAgICAgICAgIHB0clswXSB8PSBPUF9BRERfaW1tX1QzOworICAgICAg
ICAgICAgcHRyWzFdIHw9IChwdHJbMV0gJiAweEYwMDApID4+IDQ7CisgICAgICAgICAgICBwdHJb
MV0gJj0gMHgwRkZGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfQUREX2lt
bV9UMzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FjaGVGbHVzaChwdHIs
IHNpemVvZih1aW50MTZfdCkgKiAyKTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNl
dCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiAr
Mjk1LDM2IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBBc3NlbWJsZXJMYWJlbCBt
X2xhYmVsOwogICAgIH07CisgICAgCisgICAgLy8gQ29udmVydGlibGVMb2FkTGFiZWw6CisgICAg
Ly8KKyAgICAvLyBBIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlY29yZHMgYSBsb2FkUHRyIGluc3Ry
dWN0aW9uIHRoYXQgY2FuIGJlIHBhdGNoZWQgdG8gYW4gYWRkUHRyCisgICAgLy8gc28gdGhhdDoK
KyAgICAvLworICAgIC8vIGxvYWRQdHIoQWRkcmVzcyhhLCBpKSwgYikKKyAgICAvLworICAgIC8v
IGJlY29tZXM6CisgICAgLy8KKyAgICAvLyBhZGRQdHIoVHJ1c3RlZEltbVB0cihpKSwgYSwgYikK
KyAgICBjbGFzcyBDb252ZXJ0aWJsZUxvYWRMYWJlbCB7CisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IFRlbXBsYXRlQXNzZW1ibGVyVHlwZT4KKyAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOworICAgICAgICAK
KyAgICBwdWJsaWM6CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsKCkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbChBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGU+KiBtYXNtKQorICAgICAgICAgICAgOiBtX2xh
YmVsKG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xhYmVsLmlzU2V0KCk7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBBc3NlbWJsZXJM
YWJlbCBtX2xhYmVsOworICAgIH07CiAKICAgICAvLyBEYXRhTGFiZWxQdHI6CiAgICAgLy8KQEAg
LTU2Miw2ICs1OTIsMTEgQEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNz
ZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBsYWJlbCgpOworICAgIH0KICNlbmRpZgogICAgIAogICAgIExh
YmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs3MDcsMTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJlYWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9j
YXRpb24oKSk7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChD
b2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisgICAgeworICAgICAgICBBc3NlbWJs
ZXJUeXBlOjpyZXBsYWNlV2l0aExvYWQobGFiZWwuZGF0YUxvY2F0aW9uKCkpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9j
YXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisgICAgeworICAgICAgICBBc3NlbWJsZXJUeXBl
OjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbC5kYXRhTG9jYXRpb24oKSk7Cisg
ICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgQ29kZUxvY2F0aW9uTmVhckNhbGw7CiBjbGFzcyBD
b2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0OwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
MzI7CiBjbGFzcyBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI7CitjbGFzcyBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQ7CiAKIC8vIFRoZSBDb2RlTG9jYXRpb24qIHR5cGVzIGFyZSBhbGwgcHJl
dHR5IG11Y2ggZG8tbm90aGluZyB3cmFwcGVycyBhcm91bmQKIC8vIENvZGVQdHIgKG9yIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciwgdG8gZ2l2ZSBpdCBpdHMgZnVsbCBuYW1lKS4gIFRoZXNlCkBAIC02
Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgZGF0YUxh
YmVsUHRyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIg
ZGF0YUxhYmVsMzJBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgICBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0IGRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBDb2Rl
TG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgY29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNl
dCk7CiAKIHByb3RlY3RlZDoKICAgICBDb2RlTG9jYXRpb25Db21tb24oKQpAQCAtMTQ2LDYgKzE0
OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihsb2NhdGlvbikpIHt9CiB9OwogCitjbGFzcyBDb2RlTG9jYXRpb25Db252ZXJ0
aWJsZUxvYWQgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uIHsKK3B1YmxpYzoKKyAgICBDb2Rl
TG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoKSB7IH0KKyAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxvY2F0aW9uKQorICAgICAgICA6
IENvZGVMb2NhdGlvbkNvbW1vbihsb2NhdGlvbikgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKHZvaWQqIGxvY2F0aW9uKQorICAgICAgICA6IENvZGVMb2NhdGlv
bkNvbW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7IH0KK307CisKIGlubGlu
ZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omluc3RydWN0aW9u
QXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zm
c2V0KTsKQEAgLTE5NCw2ICsyMDUsMTIgQEAgaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJlbENv
bXBhY3QgQ29kZQogICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0KHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7CiB9CiAKK2lubGlu
ZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQoreworICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYg
TGlua0J1ZmZlcjo6ZmluYWxpemUKICAgICAKICAgICBkYXRhTG9nKCIgICAgQ29kZSBhdCBbJXAs
ICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8
Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgp
KTsKICAgICBpZiAoIXRyeVRvRGlzYXNzZW1ibGUocmVzdWx0LmNvZGUoKSwgbV9zaXplLCAiICAg
ICIsIFdURjo6ZGF0YUZpbGUoKSkpCi0gICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRpc2Fz
c2VtYmx5IGF2YWlsYWJsZT4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgICA8bm8gZGlzYXNz
ZW1ibHkgYXZhaWxhYmxlPlxuIik7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lv
biAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICAg
ICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IERhdGFMYWJlbENvbXBh
Y3Q7CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgRGF0YUxhYmVsMzI7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIERhdGFMYWJlbFB0cjsK
KyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBDb252ZXJ0
aWJsZUxvYWRMYWJlbDsKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCiAgICAgdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlcjo6TGlua1JlY29yZCBMaW5rUmVjb3JkOwogICAgIHR5cGVkZWYgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaW5rVHlwZSBKdW1wTGlua1R5cGU7CkBAIC0xODAsNiArMTgxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Qo
TWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJl
bC5tX2xhYmVsKSkpOwogICAgIH0KIAorICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBs
b2NhdGlvbk9mKENvbnZlcnRpYmxlTG9hZExhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZChNYWNyb0Fzc2VtYmxlcjo6Z2V0TGlua2Vy
QWRkcmVzcyhjb2RlKCksIGFwcGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7CisgICAgfQorCiAg
ICAgLy8gVGhpcyBtZXRob2Qgb2J0YWlucyB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YgdGhlIGNhbGws
IGdpdmVuIGFzIGFuIG9mZnNldCBmcm9tCiAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSBjb2RlLgog
ICAgIHVuc2lnbmVkIHJldHVybkFkZHJlc3NPZmZzZXQoQ2FsbCBjYWxsKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyKGRlc3QsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKICAgICB9CisgICAgCisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwg
cmVzdWx0KHRoaXMpOworICAgICAgICBBU1NFUlQoYWRkcmVzcy5vZmZzZXQgPj0wICYmIGFkZHJl
c3Mub2Zmc2V0IDw9IDI1NSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcldpZGU4Qml0SW1tZWRp
YXRlKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KIAogICAgIHZvaWQgbG9hZDgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92bF9tcihhZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKKyAgICBDb252ZXJ0aWJsZUxvYWRM
YWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQgPSBDb252ZXJ0aWJs
ZUxvYWRMYWJlbCh0aGlzKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICB2b2lkIGFkZERvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRzZF9tcihhZGRyZXNzLm1f
cHRyLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CiAgICAgfQogCisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwg
cmVzdWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgdm9pZCBsb2FkUHRyKEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUs
IGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBh
dGNoQnVmZmVyLmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDI0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUo
cmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAg
ICB9CisgICAgCisgICAgdm9pZCByZXBsYWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uQ29udmVydGli
bGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRo
TG9hZChsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29t
cHV0YXRpb24oQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBzZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShDb2RlTG9j
YXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwsIGJvb2wgaXNBY3RpdmUpCisgICAgeworICAgICAg
ICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAgICByZXBsYWNlV2l0aExvYWQobGFiZWwpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJl
bCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEy
MTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiA1OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZfNjQp
CisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0cisr
OworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01PVl9H
dkV2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAg
ICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lk
KiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82NCkK
KyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRyKys7
CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9WX0d2
RXY6CisgICAgICAgICAgICAqcHRyID0gT1BfTEVBOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBj
YWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlk
T3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdldF9i
eV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
OgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRfc2Vs
ZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzMyw2ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46CkBA
IC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVj
LCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
cmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmlu
c3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwogICAgICAgICAg
ICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAg
ICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBAIC0y
MDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQo
Y3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQog
ICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51
LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1Zh
bHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNl
dChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBm
YWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwgU3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3ICs4
OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICAgICAg
CiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNw
ZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
aWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAtMTU2
LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3Bl
Y2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5v
dEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpIHsK
ICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAg
ICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZv
dW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xNzYsMTAgKzE3NiwxMCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXNJZ25vcmVkOwogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAg
ICAgICAgc2l6ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3Bl
Y2lmaWNWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9PSBu
b3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkgewog
ICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVj
dHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlz
VmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
bV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIzLDEx
ICsyMjMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNl
dCA9PSBub3RGb3VuZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQubV9v
ZmZzZXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zm
c2V0KSkgewogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAgICAg
IHJlc3VsdC5tX3N0cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFpbi5j
bGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEdldEJ5SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVk
ZSA8d3RmL05vdEZvdW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICBH
ZXRCeUlkU3RhdHVzKCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAgICAg
ICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkK
ICAgICB7CiAgICAgfQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRlIHN0
YXRlLCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQg
PSBTdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9
IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJl
Kj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRl
KQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX2No
YWluKGNoYWluKQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAg
IGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWlu
OyB9IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzLgog
ICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1
ZTsgfSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1ZS4K
LSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogICAg
IGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAg
ICAKQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBtX3Nw
ZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1f
b2Zmc2V0OwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2
ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRo
X2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9y
ZXNvbHZlX3dpdGhfdGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAg
IG1hY3JvKG9wX2dldF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAg
ICAgIG1hY3JvKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHByb2Zp
bGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMgdmFs
dWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2No
YWluLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50
c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAgICBp
ZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0gICAg
ICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZAorICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAw
LCBvZmZzZXQpOwogICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dAotICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAgICAg
ICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGlu
ZSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51
LnN0cnVjdHVyZS5nZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlv
bls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOwog
ICAgIEFTU0VSVChjaGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVy
ZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAob2Zm
c2V0ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmV3
U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVy
ZSwgY2hhaW4sIG9mZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2Uu
YmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAgICAg
ICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgp
LAogICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBhY2Nl
c3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1
dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBp
ZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAg
IFNpbXBsZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBz
dHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAgICAg
IG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAg
IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8gRU5B
QkxFKEpJVCkKLSAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgaW52YWxpZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZp
c2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5SWRT
dGF0dXNfaAogI2RlZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zm
c2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAgICAg
ICAgLCBtX25ld1N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkKLSAg
ICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zm
c2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAgIHNp
emVfdCBvZmZzZXQpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgOiBt
X3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKICAg
ICAgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAgICAg
ICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVyZUNo
YWluKTsKLSAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAgICAg
QVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQ
YXRoKSA9PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0K
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0
dXJlOyB9CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJ1Y3R1cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1fb2xk
U3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJl
Q2hhaW4qIG1fc3RydWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3Bl
cnR5T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwx
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIEVOQUJMRShMTElOVCkgfHwgRU5BQkxFKEpJ
VCkKIHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JTdHJ1Y3R1cmUoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnRpZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFs
dWUpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAg
ICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoUmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxl
LCBzdHJ1Y3R1cmUsIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CiB9CisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKSB8fCBFTkFCTEUoSklUKQogCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21w
dXRlRm9yTExJbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2Jh
bFN0YXR1c19oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZz
ZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01
MSw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1
cygKLSAgICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90
IG9mZnNldCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAg
ICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMg
QEAgcHVibGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gVGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7
CiAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9
OyAvLyBjbGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxB
cmVVc2luZ0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgaWYgKCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0
dXJlIHNldCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAg
ICAgU3RydWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlz
aW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGlu
dDhfdCBzY3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25l
OworICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAg
ICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3Qg
ZGVsdGFDaGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDE2X3Qgc3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBzdHJ1Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVy
dHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1
cmVUb0NvbXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3Rv
cmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50
ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRp
b25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNl
dCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXgg
YmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0
YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDb25zdGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0
KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNl
SW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
CiB7CiAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zm
c2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VS
VCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAg
IG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OwotICAgIH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRU
b0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9
IDA7Ci0gICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3Jh
cGgoCiAgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNj
ZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vz
c0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zm
c2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uo
b2Zmc2V0KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRp
Zmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3Jh
Z2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVj
a1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMu
c3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdl
OwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBT
dHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgp
LnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9
IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4o
KVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3Vy
cmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5s
aW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVj
dHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAg
IAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0
aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2Un
cmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAg
ICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVy
LCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAg
ICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9i
eV9pZAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
XTsKQEAgLTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xv
dCksIGdldFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZDogeworICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CkBAIC0yMjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
b3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBO
b2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kXTsKQEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRl
ICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQo
cHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0
b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihK
U09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAg
IG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3Rv
cmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9w
SW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdl
LCBiYXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFn
ZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFj
Y2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsK
KyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZl
VG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VB
Y2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0Rh
dGEpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAg
ICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1
cy5vbGRTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5l
d1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRT
dHJ1Y3R1cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRC
eUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0Owog
ICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAg
ICAgaWYgKHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5v
ZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVv
ZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNp
emUoKSksCkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsK
LSAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVz
Lm9mZnNldCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlk
ZW50aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAt
MjczOCw4ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdl
dEJ5T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgaWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5l
U3RvcmFnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1f
Z2xvYmFsUmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVz
b2x2ZSBpbmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29w
ZWRfdmFyOgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmU6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEy
MTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2Fs
bFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhH
ZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9E
b25lID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAg
aW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3Bl
cnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0
Y2guZGZnLmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYs
NyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
SW1tLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVj
aywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxv
YWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3Is
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBA
IHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0s
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9h
ZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxv
YWRMb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJh
dG9yLApAQCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAg
ICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJ
bW0oc3RydWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hl
Y2spCisgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQp
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3Jl
KQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJv
cGVydHlBY2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JT
dG9yZTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBj
b25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGlj
IHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNv
bXBhY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAK
QEAgLTUyLDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3Mo
Q29kCiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0
aGUgbG9hZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZn
LmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0
TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZl
cnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICBpZiAoY29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOwor
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9M
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAg
ICBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkg
KiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
VGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Cisg
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRM
b2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRS
ZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAt
MTA1LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUK
ICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNo
LCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxv
Y2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91
dGluZSkKK3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNs
b3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5
LDEzICsxNDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Ygog
ICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHVi
Sml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1
bHRHUFIpOworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7
CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1Ykpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zm
c2V0KG9mZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAj
ZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3Qt
PmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisg
ICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAg
LTI1Myw3ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
CiAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhl
YywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAg
ICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksMTIgKzM2MCwyMCBA
QCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICB8
fCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CiAg
ICAgICAgICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6
OkdldHRlcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIp
OwotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2
ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9m
TGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0
Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNl
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9w
ZXJhdGlvbkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg1LDEzICs0MDQs
MjcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAg
ICAgaGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0dWJKaXQuanVt
cChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAg
IGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVz
dWx0R1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICAgICAgc3R1YkppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAg
ICAgICAgICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7CisgICAgICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0
VGFnR1BSKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBz
dHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxh
dGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAg
ICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7
CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAg
ICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5k
aWYKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsK
ICAgICAgICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDUwLDcgKzQ4Myw3
IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGUKICAgICAKICAgICBB
U1NFUlQoc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KTsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjcsNyAr
NjAwLDcgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3Jv
QXNzZW1ibGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQ
UlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3Jp
dGVCYXJyaWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkp
KSkgewogICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hH
UFIoYmFzZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRy
dWU7CiAgICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNjE5LDIw
IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkK
LSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9y
YWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNj
cmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFs
dWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAg
IH0KICNlbmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1
dFRyYW5zaXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBp
ZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0
b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkp
KQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJ
bklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRj
aEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIp
OworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uo
c2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAg
ICAgICAKQEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhl
Y1N0YXRlKiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJl
YWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAg
ICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2Vs
bCk7CkBAIC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChF
eGVjU3RhdAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFs
bG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgs
NyArNTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENv
bXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHBy
b3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21w
YWN0IHRhZ0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZz
ZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIp
OwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNo
ID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApAQCAt
NTUwLDcgKzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8K
ICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNj
ZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBz
dHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdM
b2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVM
YWJlbCwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+
KHJlc3VsdFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTY1
LDcgKzU2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAog
ICAgIHdyaXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBX
cml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGli
bGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7
CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9IG1f
aml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29t
cGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQ
cm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAg
ICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAg
ICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJv
cGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21w
YWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAg
ICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5
bG9hZEdQUiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9m
TGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVz
dWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTEs
OCArMzg5MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RNYXRjaCA9IG1faml0LmJyYW5j
aFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwog
CiAgICAgICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxS
ZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJ
VF9BU1NFUlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJl
YWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQ
UiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwog
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRQYXlsb2Fk
R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXls
b2FkR1BSKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcs
NyArNDk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENv
bXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEp
KSk7CiAgICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAg
SklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQor
ICAgICAgICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQu
bG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVs
IGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcsOCArNTE4LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9w
ZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBj
b2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBh
dGNoLCBzbG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50
OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBk
b25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVz
dWx0R1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAg
ICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6
UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzYs
NyArNTM3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAg
ICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVy
Rm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJl
bCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBz
dG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1
ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCiAgICAgSklUQ29t
cGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01NjYsNyArNTY4LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNl
R1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQot
ICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRh
TGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9u
ZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVl
R1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3Bl
cnR5QWNjZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3Rv
cmFnZUxvYWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9y
ZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAg
ICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3ICszNTgwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAK
ICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9u
dE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFs
UmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBK
SVRDb21waWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworI2lmIERGR19FTkFCTEUoSklUX0FT
U0VSVCkKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1
c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5icmVha3Bv
aW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUlu
Zm9HUFIsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNp
emVvZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEyMTgwNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9y
ZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdl
IHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwotICAgICAgICBt
X2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgICAgICBtX2pp
dC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0YWJsZSB0byBoYXZlIHN0cnVjdHVy
ZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlvdSdyZSBmaW5lCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzMyw3ICszMzMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChjZWxsKSkgewotICAgICAgICBK
U09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9y
KTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcgKzE4MjIsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAgICAgIEFTU0VSVChzbG90LnNs
b3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5j
YWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5
cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQg
bm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1MSw3ICsxODUxLDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICBzaXplX3QgY291
bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5z
bG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkgewogICAg
ICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpOwpAQCAtMzA0NSw2
ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhfdGhpcyk7CiAgICAgICAg
IE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlfaWQpIHsKICAgICAg
ICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lE
KSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYgKzM1MjgsNyBAQCBza2lwX2lkX2N1
c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6CiAgICAgZ290byAqKCYmc2tp
cF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfb3V0
X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWQpIHsKICAgICAgICAgLyog
cHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG5vcChuKSBub3Aobikgbm9w
KG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICszNTY3LDggQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0
eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0
dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAgIApAQCAtMzYwNSw3
ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICBiYXNlT2Jq
ZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KCpnbG9iYWxE
YXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNd
LnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbN10udS5v
cGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNl
T2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlm
aWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwg
Y2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0zNjM5LDcgKzM2NDMsNyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNP
YmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFu
ZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwor
ICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2Nh
dGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwpAQCAtMzcxNyw3ICszNzIx
LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNWYWx1ZSBleHBlY3RlZFN1YnNj
cmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgpOwogICAgICAgICBpbnQgaW5k
ZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0g
ICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSAw
OwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vic2NyaXB0ICYmIGJhc2VWYWx1
ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSA9PSBpdC0+Y2Fj
aGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgsIG9mZnNldCkpIHsKICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShhc09iamVjdChiYXNl
VmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2FjdGl2YXRpb24p
CiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX09QKG9wX2VxX251bGwp
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpAQCAtMzE5LDggKzMyMCwxMSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3Bl
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ0MSw2ICs0
NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKKyAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYXJndW1lbnRz
X2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92YWwpCkBAIC00
NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5j
KQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRf
YnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwpAQCAtNTM3LDYg
KzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51Lmdl
dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3Ry
dWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuc3Ry
dWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhv
dFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlQ2hl
Y2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VM
b2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVn
aW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRp
c3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNl
bWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0
dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0ciho
b3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dFN0cnVjdHVyZVRv
Q29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0LnByb3BlcnR5U3Rv
cmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBh
dGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9h
ZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5w
dXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlz
cGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNrOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBnZXRE
aXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4NiwyNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFBy
b3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25J
bmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3Jh
Z2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRp
c3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWws
CiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNr
LCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwKICNlbmRpZgorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKICAgICAgICAgICAgIDog
bV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikKICAgICAgICAgICAg
ICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29tcGFyZSkKICAgICAgICAgICAg
ICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICAgICAsIHByb3Bl
cnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKICNl
bHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1
YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAg
ICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0
ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFj
ZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNw
bGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlz
cGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50
TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNl
bWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNw
bGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAgKQogICAgICAgICAgICAgOiBtX3R5
cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQog
ICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2luKQorICAgICAgICAgICAgLCBw
cm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAgICAgICAgICAgICAsIHB1
dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUpCiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxhY2VtZW50TGFiZWwp
CkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29tcGlsZShmdW5jdGlvbkVudHJ5
QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNv
bXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0
ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhz
dHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNo
ZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJs
b2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVj
b2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3Qo
c3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUs
IGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3Ry
dWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMg
dm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAg
ICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAg
ICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJv
dG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0
cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAg
fQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hl
ZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChn
bG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQg
PSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJl
bnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZz
ZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
R2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1Yklu
Zm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2Fj
aGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAgICAgICAgc3RhdGljIHZvaWQg
Y29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9i
YWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBz
dHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVy
JiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaFB1
dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFj
ZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBz
aXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sq
IGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CisgICAgICAg
IHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKICAgICAgICAg
c3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2Nr
KiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1
bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4q
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGlu
dCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNo
YWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogCiAgICAgICAgIFBhc3NS
ZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJh
bXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVjdHVyZSopOwogICAgICAgICBM
YWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc0Nv
bnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9CiAjZW5kaWYKIAorICAgICAg
ICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90RmluYWwgfTsKKwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMy
X3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21w
aWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZp
ZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlz
TWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3Vs
dFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3Rl
cklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCk7Ci0gICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsK
KyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpT
T2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXls
b2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCwgRmluYWxPYmplY3RNb2Rl
ID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2Fk
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAgICAgIC8vIEFyaXRobWV0aWMg
b3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRkMzJDb25zdGFudCh1bnNpZ25lZCBk
c3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CkBA
IC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBp
bGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqKTsKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElk
ZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBi
b29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVj
dE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVk
T2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKLSAgICAgICAgdm9p
ZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1
ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmpl
Y3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
OworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCwg
RmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNp
b24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFk
ZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKICAgICAv
LyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIKLSAgICBp
ZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBzdG9yYWdlUHRyKTsKLSAgICAgICAg
c3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAgICAgICBzdG9yZVB0cihUcnVzdGVk
SW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQs
IENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChU
IHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAvLyBWZXJpZnkgc3RydWN0dXJlLgot
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMCk7CisgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBzdHJ1Y3R1cmUpKSwgcmVnVDEp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSks
IHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2Jh
bFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAgIGxvYWQzMihCYXNlSW5kZXgocmVn
VDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
cGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1Qy
LCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRh
ZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJl
Z1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5
dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVOR1RIKG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2dsb2JhbCkpLCBkc3QsIHJlZ1Qx
LCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJ
KHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBMb2FkIGNhY2hlZCBwcm9wZXJ0eQog
ICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFsd2F5cyB1c2VzIGV4dGVybmFs
IHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNH
bG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1QwKTsKICAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwg
cmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgU2NhbGVQdHIpLCBy
ZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHJlZ1QxLCBy
ZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9p
ZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBh
IGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJl
bnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2Rl
KSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJ
RCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+
dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hl
Y2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgCiAgICAg
Y3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAg
ICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkK
ICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3Ry
dWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7CisgICAgQ29udmVydGlibGVMb2Fk
TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMik7CiAgICAg
RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBsb2FkUHRyV2l0aENvbXBhY3RB
ZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNl
dCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50
TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVn
VDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7IC8vIHRhZwogICAgIApAQCAt
MzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoKQogICAgIAog
ICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwog
Ci0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhv
dFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2Vt
ZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
byhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRp
c3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMzk5LDcg
KzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsKICAgICAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBj
b252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZM
aW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
MSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMiwgQWRkcmVzcyhyZWdUMSwg
cGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2FkCiAgICAgRGF0YUxhYmVsMzIg
ZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1Qz
LCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHRhZwogICAg
IApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVj
dGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyLCByZWdUMSwgcmVnVDIs
IFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsK
IAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1
YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBo
b3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNw
bGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9i
eXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5
U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyKSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQz
MCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QK
IH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBh
eWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFs
dWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNl
dCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBlbWl0U3RvcmUob2Zmc2V0LCB2
YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQo
Y2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0Ojpv
ZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIGVtaXRTdG9yZShpbmRleFJl
bGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGJhc2Up
OwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3Jh
Z2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3Vs
dFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVj
dE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklE
IHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQg
b2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZz
ZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2FjaGVkT2Zmc2V0
KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQYXlsb2FkOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHRl
bXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1w
KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5l
U3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNo
ZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOwogfQogCi12b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3Zv
aWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklE
IHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNl
dCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZDMyKEFkZHJl
c3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsK
KyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSksIHJlc3Vs
dFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIGxv
YWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxv
YWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHRUYWcpOworICAg
IGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hl
ZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQz
MihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNl
dCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNo
ZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBi
b29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcmVnVDAg
Y29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250YWlucyB0aGUgYmFzZVRhZy4g
UmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KSB8
fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9jYXRlIHByb3BlcnR5IHN0b3JhZ2Ug
aWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAgICBib29sIHdpbGxOZWVkU3RvcmFn
ZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3
U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGJvb2wgd2lsbE5lZWRT
dG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKHdpbGxOZWVkU3RvcmFnZVJl
YWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5lIHdhcyBjYWxsZWQgdG8gbGlrZSBh
IEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFnYWluIHdlIG5lZWQgdG8KICAgICAg
ICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRoZSBzdGFjaywgdG8gcHJldmVu
dCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVkLgpAQCAtNDk5LDcgKzUxMSw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1YkNh
bGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50
KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyB2YWx1ZQot
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpKTsKICAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAg
ICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3ICs1NjUsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cGF0Y2hHZXRCeUlk
U2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwog
ICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29k
ZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBKSVRTdHViczo6Y3RpX29w
X2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5n
IHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0
dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKICAg
ICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAg
ICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJv
bSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1
cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlz
cGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0ICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAgICByZXBhdGNoQnVmZmVy
LnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVy
dGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5
U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0
QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVs
MSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBh
Y3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFi
ZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQogCi12b2lkIEpJ
VDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklU
OjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7
CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01
NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sq
CiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0
IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9u
UHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0
X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUp
ICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9w
b2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sg
Zm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1
cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJl
cGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5w
dXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkp
OworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVu
dExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAor
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExh
YmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKIH0KIAogdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlv
bihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwp
KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03MDAsNyArNzEwLDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgogfQogCiAKLXZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3Zv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEp1bXAg
ZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKQEAgLTc2MCw3
ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHVi
Um91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zm
c2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBo
b2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4MzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3Rv
dHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTc1LDEz
ICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5j
dGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCkKK3ZvaWQgSklU
Ojpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQsIEZpbmFs
T2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVl
KSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNl
LCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9m
ZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
LCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1vZGUgPT0gTWF5QmVGaW5hbCkgewor
ICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3Rl
ZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAg
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJh
c2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhh
bk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOwor
ICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7Cisj
ZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAgICBsb2FkMzIoQmFzZUluZGV4KGJh
c2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBU
aW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAtIGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRUYWcpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAg
IHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3RzKSkpKTsKKyAgICBhZGQzMihB
ZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9v
ZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCBy
ZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEs
IHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEwICsxNTEs
MjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQs
IFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdp
c3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgp
KSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2Fs
ZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKKyAg
ICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmluYWwpIHsKKyAgICAgICAgSnVt
cCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgICAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmsodGhpcyk7CisgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UsIHNjcmF0
Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhh
bk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOwor
ICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7Cisj
ZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0KKyAgICBsb2FkUHRyKEJhc2VJbmRl
eChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Bu
YW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yODMsNyArMjk5LDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRf
b3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
Ly8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4K
LSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlv
biArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRf
YnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudElu
c3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09
IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3Vy
cmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNv
ZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAKICAgICBjdXJyZW50SW5zdHJ1Y3Rp
b24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwogICAgIHVuc2lnbmVkIHJlc3Vs
dFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMzczLDE0ICszOTAs
MTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZQogICAgIFBhdGNo
YWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hH
ZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVj
ayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0
Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsKIAog
ICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVF
TkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBp
bGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1
YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21w
YXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3VsdCkpOworICAg
IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBp
bGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRo
QmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFn
ZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0ICs0NTcsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJlbFB0
ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBhdGNo
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBh
dGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAgICBD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlZ1QyKTsKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCA9IHN0b3JlUHRyV2l0
aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgcGF0Y2hQdXRCeUlkRGVm
YXVsdE9mZnNldCkpOwogCiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQ
dXRCeUlkKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
KTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwpKTsK
KyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJD
b21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90
UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3Bs
YWNlbWVudExhYmVsKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3Mg
cHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAvLyB2YWx1ZSBpbiBvYmplY3RS
ZWcuCi12b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICog
c2l6ZW9mKEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRy
ZXNzKGJhc2UsIG9mZnNldCkpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQp
KSB7CisgICAgICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3Rv
cmFnZShjYWNoZWRPZmZzZXQpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIGJhc2UpOworICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIHNpemVvZihKU1Zh
bHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CiB9CiAKIC8v
IENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBv
dmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNh
Y2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHQpOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldCksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldElu
SW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0
KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2Jq
ZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQg
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJl
c3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+
YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlc3VsdCwgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCBy
ZXN1bHQpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAg
IGxvYWRQdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NP
Zk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9u
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKIHsKICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgLy8gQ2hlY2sgZWF4IGlz
IGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAtNTIyLDcgKzU1Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAgIAogICAg
IC8vIGVtaXQgYSBjYWxsIG9ubHkgaWYgc3RvcmFnZSByZWFsbG9jIGlzIG5lZWRlZAotICAgIGJv
b2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7Cisg
ICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAo
d2lsbE5lZWRTdG9yYWdlUmVhbGxvYykgewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xpbmUgd2Fz
IGNhbGxlZCB0byBsaWtlIGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwgYWdhaW4g
d2UgbmVlZCB0bwogICAgICAgICAvLyByZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZyb20gdGhl
IHN0YWNrLCB0byBwcmV2ZW50IHRoZSBzdGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWduZWQuCkBA
IC01MzIsNyArNTYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
bwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAgICBzdHVi
Q2FsbC5za2lwQXJndW1lbnQoKTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3Vt
ZW50KCk7IC8vIHZhbHVlCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0z
MihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSkpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5l
d1N0cnVjdHVyZSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKICAgICAgICAgZW1p
dEdldEpJVFN0dWJBcmcoMiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYwMiw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0Nh
bGxlclRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5m
by0+c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxm
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAg
LTU4MCwxNCArNjEwLDEzIEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayog
Y28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gY3RpX29wX2dldF9ieV9pZF9mYWlsLCBi
dXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rp
b25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAotICAgIGludCBvZmZzZXQgPSBz
aXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0
IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1
Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNl
dCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5m
by0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogCkBAIC01OTUsMTEgKzYyNCwxMCBAQCB2b2lkIEpJVDo6cGF0Y2hQ
dXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0
aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVz
dGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9u
KHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGly
ZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIAotICAgIGludCBvZmZz
ZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUg
b2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRo
ZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZz
ZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNh
Y2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0
aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0
LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hl
ZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3ICs2NzEsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9v
cF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0
ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5j
aW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBl
IG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVh
cmx5ISkKQEAgLTcxMCw3ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQog
Ci12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGlj
U3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNo
ZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBv
bHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hl
Y2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0g
ZmFsc2U7CkBAIC03NzAsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50
SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1
YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlz
CiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxh
dGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04MzksNyArODY3LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29k
ZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNv
dW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcgKzk0Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVy
LnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUo
KSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NCw3ICs5NTQsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVf
dCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBz
bG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KSB7
CiAgICAgICAgIHN0dWJJbmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9nZW5lcmlj
OwpAQCAtMTQ4NiwxMyArMTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCos
IG9wX3B1dF9iCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpOwogICAgIGludDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigp
OwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gc3RhY2tGcmFtZS5hcmdzWzRdLnN0cnVj
dHVyZSgpOwotICAgIGludDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKTsKKyAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCk7CisgICAgCisgICAgQVNTRVJUKG9sZFNpemUgPj0gMCk7CisgICAgQVNT
RVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3Qo
KSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgUHJvcGVy
dHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIG9sZFNpemUsIG5ld1NpemUpOwotICAgIGJhc2UtPnNldFByb3BlcnR5U3RvcmFnZShnbG9i
YWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBu
ZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgb2xkU2l6
ZSwgbmV3U2l6ZSk7CisgICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBu
ZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC0xODE0
LDcgKzE4MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAg
ICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogc2xv
dEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwogICAgIAotICAgIHNpemVf
dCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJh
c2VWYWx1ZSkKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywg
U1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19m
YWlsKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYg
IXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERh
dGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApA
QCAtOTQwLDcgKzk0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQKICAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1By
b3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
ICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ug
c29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyArOTU4LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOwotICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdl
KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1
Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKQEAg
LTk2MCwxNiArOTY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQKICAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBp
ZiAocGNbOF0udS5vcGVyYW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9w
ZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0g
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMTgw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5LDI0IEBAIF9sbGludF9vcF9pc19z
dHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFn
LCBwYXlsb2FkKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwg
SW5saW5lU3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0
T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxv
YWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFn
ZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAq
IElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwg
OF0sIHBheWxvYWQKK2VuZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHBy
b3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYmlsdCBw
cm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RB
bmRTdG9yYWdlCisgICAgam1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9i
amVjdDo6bV9pbmxpbmVTdG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0
QW5kU3RvcmFnZQorLnJlYWR5OgorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RB
bmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCiBtYWNybyByZXNv
bHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAg
ICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtOTMwLDkgKzk0OCw3IEBA
IG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CiAgICAgbG9hZGkgMTZb
UENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0g
ICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5v
dEZpbmFsKHQxLCB0MCwgdDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMTAzLDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdl
IG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRv
IG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUg
Y2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBp
cyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRp
bnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRh
a2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBh
bnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQotICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFu
ZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENd
LCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwg
dDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2Fk
aSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2Fk
aSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2go
OSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAg
ICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAg
IGxvYWRpIDRbUENdLCB0MQorICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3Rv
cmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgICAgICAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVBy
b2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAg
ZW5kKQorCisgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKLS5vcEdldEJ5
SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAg
ICBkaXNwYXRjaCg5KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdl
dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNf
bGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1OSw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8g
cHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
IDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0
MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
LSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIs
IHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zm
c2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRp
c3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAg
dDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAg
ICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAg
ICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRj
aCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3Rv
cmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlT
dG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAor
CitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAK
IC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9i
eV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0
aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5
SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRk
aXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAg
ICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
LCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlk
U2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQx
Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRw
IHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAg
d3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBs
b2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0
b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdl
dFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNy
byAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVy
dHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIs
IHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAg
ICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3Jl
cCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisg
ICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJl
LCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVy
ZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNp
bmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAy
OFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNo
CisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFn
LCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUs
IFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5l
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxU
YWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3Ms
IHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hl
Y2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRo
ZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAg
ICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAg
ICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0g
ICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAg
ICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90
b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwg
b2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
c2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5s
b29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24o
c3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5z
aXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9s
bGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzE4LDggQEAgX2xsaW50X29wX2dldF9i
eV9wbmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAg
IGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3Qz
XSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC03NzgsNiArNzc4LDIyIEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2go
MykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChw
cm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCisgICAgYXNzZXJ0KG1hY3Jv
IChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVu
ZCkKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3Jh
Z2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKK21h
Y3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVjdEFu
ZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VD
YXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFn
ZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5p
c0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2Fk
cCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9m
ZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQog
ICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBEZXN0
aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArODA1LDcgQEAgbWFjcm8gcmVzb2x2ZUds
b2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQog
ICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQQywg
OF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAg
ICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAgdDIs
IFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQwCkBA
IC05MzcsNyArOTUyLDcgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRp
c3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0UHJv
cGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9u
b21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkg
dGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRv
IGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NjMsMzAgQEAgX2xs
aW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlz
IDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQyXSwg
dDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywgOF0s
IHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFBy
b3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAo
cHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2Ny
YXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAgICAg
ICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3Jh
dGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAgICAg
ICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29w
X2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCi0ub3BHZXRCeUlk
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAg
ZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBnZXRC
eUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKQEAgLTk3OCw2NSArMTAwNSw5MyBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0
QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRp
cyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
cyAyNFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRC
eUlkU2xvdwotICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQwKQotICAgIHdyaXRlQmFycmllcih0MCkKLSAgICBzdG9yZXAgdDAsIFt0
MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAg
IHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRj
aCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKKyAgICAgICAgICAgIHdyaXRl
QmFycmllcih0MCkKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdl
LCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxp
bnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1
dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkK
ICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxD
aGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0
aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25h
bENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBs
b2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1
dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpcyA0MFtQ
QiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0s
IHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkK
LSAgICB3cml0ZUJhcnJpZXIodDEpCi0gICAgc3RvcmVwIHQxLCBbdDNdCi0gICAgbG9hZHAgNDhb
UEIsIFBDLCA4XSwgdDEKLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0g
ICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAg
ICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAg
ICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQorICAg
ICAgICAgICAgc3RvcmVwIHQxLCBbdDNdCisgICAgICAgICAgICBsb2FkcCA0OFtQQiwgUEMsIDhd
LCB0MQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRp
b25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJl
Q2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9
IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3Ig
dGhlIHByb3RvCisgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAorICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFp
bjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0
cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKKy5sb29wOgorICAgIGxvYWRwIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1
cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDgsIHNjcmF0Y2gKKyAgICBi
cG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxv
b3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xv
dykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdp
dGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1
cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1
Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90
bwotICAgICAgICAgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAotICAgICAgICAgICAg
YXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9h
ZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBi
cGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9u
ZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xk
U3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgOCwgc2NyYXRjaAot
ICAgICAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBW
YWx1ZU51bGwsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJ
ZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisK
K19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAg
cHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9y
YWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEwNiw4ICsxMTYxLDggQEAgX2xs
aW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
LCB0MwogICAgIHN1YmkgMSwgdDMKICAgICBiaWFlcSB0MywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9udW1DYWNoZWFibGVTbG90c1t0MV0sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQzLCA4
XSwgdDAKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0MV0s
IHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQwKQogICAgIGxv
YWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBk
aXNwYXRjaCg3KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw2ICs4NCwxMyBAQCBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRh
CiAjIFN0cmluZyBmbGFncy4KIGNvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAogCisjIFBy
b3BlcnR5IHN0b3JhZ2UgY29uc3RhbnRzCitpZiBKU1ZBTFVFNjQKKyAgICBjb25zdCBJbmxpbmVT
dG9yYWdlQ2FwYWNpdHkgPSA0CitlbHNlCisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5
ID0gNgorZW5kCisKICMgQWxsb2NhdGlvbiBjb25zdGFudHMKIGlmIEpTVkFMVUU2NAogICAgIGNv
bnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKQEAgLTMxMiw4ICszMTksNyBAQCBt
YWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgIHN0b3JlcCBz
Y3JhdGNoMiwgW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0
cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJ
RFtyZXN1bHRdCi0gICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gx
Ci0gICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jl
c3VsdF0KKyAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVz
dWx0XQogICAgIGVuZAogZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEgQEAgX2xsaW50X29wX3Jlc29s
dmVfd2l0aF90aGlzOgogICAgIGRpc3BhdGNoKDUpCiAKIAorbWFjcm8gd2l0aElubGluZVN0b3Jh
Z2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICAjIEluZGljYXRl
IHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCisg
ICAgIyBwcm9wZXJ0eSBzdG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICBjb250aW51YXRp
b24ob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFjcm8gd2l0aE91dE9mTGluZVN0
b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5U3RvcmFnZQorICAg
ICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVyIG5vdyBwb2ludHMg
dG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgb2JqZWN0IHJlZ2lz
dGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRlciBpcyBub3QgbmVl
ZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFnZSwgb2JqZWN0KQor
ZW5kCisKKwogX2xsaW50X29wX2RlbF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5X2lkKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUs
NyArNTU1LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhh
bmRsZVg4NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5k
IG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJh
ZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBl
bHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQog
ICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAg
ICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAg
ICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3Vm
Zml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5k
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkg
PT0gb3BlcmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4
KGtpbmQpfSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTIxODA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKLSAgICAgICAgc2l6
ZV90IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0
aW9uTmFtZU9mZnNldDsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJP
YmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0
ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIHNp
emVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9m
ZnNldDsgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51
bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0
cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Mywy
NCArOTMsNTQgQEAgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAg
IGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCisgICAgCisgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgUHJvcGVydHlTdG9y
YWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0
b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0
dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCk7CisgICAgICAgIC8v
IFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0
aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgor
ICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBw
ZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9y
YWdlU2l6ZSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+
KHRlbXApOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3Jh
Z2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOworICAgIH0KKworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pbmhlcml0b3JJRCk7CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1h
cmtWaW9sYXRpb247CisjZW5kaWYKK30KKwordm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGaW5hbE9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0g
dmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9y
Lm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAg
ICAKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAg
ICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgp
OwotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXpl
KTsKLSAgICBlbHNlIHsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3Qt
Pm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qg
c3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktu
b3duRmluYWxPYmplY3QoKTsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVy
ZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZl
cmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdl
OwotICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgdmlz
aXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFn
ZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CiAgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5U3Rv
cmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIHRo
aXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6
OlVuY2hlY2tlZCk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQp
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAor
ICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVT
aXplRm9yS25vd25GaW5hbE9iamVjdCgpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPmlubGluZVN0b3JhZ2UoKSwgc3RvcmFnZVNpemUpOworCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3
YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogI2VuZGlmCkBAIC0xNTMsOCArMTgz
LDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAo
SlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkg
ewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmlj
VmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAg
ICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAyLDcgQEAgYm9vbCBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsK
ICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoaXNWYWxpZE9mZnNldCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBEb250RGVsZXRlICYmICFleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93blByb3Bl
cnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
bW92ZURpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CkBAIC0zOTQsNyAr
NDI0LDcgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlYwogYm9vbCBK
U09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKIHsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBX
VEY6Om5vdEZvdW5kKQorICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUp
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rp
b24gd2l0aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC01MTYsMjAg
KzU0NiwyMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAKIGJv
b2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3Qgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkp
IHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCA9
PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zm
c2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVj
dHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zm
c2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zm
c2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5LDIyIEBAIFN0cnVjdHVyZSog
SlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEoKICAgICByZXR1cm4gbV9pbmhlcml0b3JJRC5n
ZXQoKTsKIH0KIAotUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93UHJvcGVydHlTdG9yYWdl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXpl
KQorUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAg
ICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhh
dCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVyZSgpLCBzaW5jZQogICAgIC8vIHdl
IG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9uLgogCi0gICAgUHJvcGVydHlT
dG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOworICAg
IFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX291dE9mTGluZVN0b3JhZ2Uu
Z2V0KCk7CiAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CiAKLSAg
ICBpZiAoaXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgIGlmICghb2xkUHJvcGVydHlTdG9y
YWdlKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2Ug
R0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUt
cHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gbmV3UHJvcGVydHlTdG9yYWdl
OwogICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9m
KFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pICogbmV3U2l6ZSwgJnRlbXApKQogICAgICAgICAg
ICAgQ1JBU0goKTsKICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJv
cGVydHlTdG9yYWdlPih0ZW1wKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
b2xkU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJv
cGVydHlTdG9yYWdlW2ldOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBl
eHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhv
c2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0
ZW1wID0gb2xkUHJvcGVydHlTdG9yYWdlOwpAQCAtNTk0LDggKzYyMSw4IEBAIGJvb2wgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
ID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBvYmplY3Qt
PnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIGNlbGwpOwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOworICAgIGlmIChvZmZzZXQg
PT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihvYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVz
KTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBp
cyBhIGdldHRlci9zZXR0ZXIKICAgICB9OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZp
bmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNgotI2Vsc2UKLSNkZWZpbmUg
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAotI2VuZGlmCi0KLUNPTVBJTEVf
QVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSAwKSwgZmluYWxf
c3RvcmFnZV9ub25fbmVnYXRpdmUpOworICAgIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKICAgICBj
bGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0
Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2Jq
ZWN0OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKIApAQCAtMTY5LDI2ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3Rf
aW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRo
ZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewot
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3Vu
ZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOworICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwot
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgICAg
IHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCkt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rp
b24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRp
b25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zm
c2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0
CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCk7IH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ug
aW5saW5lU3RvcmFnZVVuc2FmZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAg
fQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbiAtIHByb3BlcnR5U3RvcmFnZSgpOworICAg
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsK
KyAgICAgICAgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7
CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9Cisg
ICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5s
aW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb25zdFBy
b3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkxp
bmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9y
YWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisKKyAgICAgICAgY29u
c3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtv
ZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9m
TGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAg
IH0KKworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFn
ZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAm
b3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvckxvY2F0aW9uKFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAg
ICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNldEluSW5s
aW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBs
b2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAg
ICAgICAgICAgdmFsaWRhdGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAg
IHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkg
KzI0Niw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBr
bm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdl
dCgpOyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtv
ZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRV
bmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5nZXQoKTsgfQorICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkg
eyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUp
OyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9
CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FT
U0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rp
b25zUmVpZmllZCgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVk
KCk7IH0KICAgICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3Rh
dGUqIGV4ZWMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBn
cm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSk7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJv
cGVydHlTdG9yYWdlLmdldCgpCi0gICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCo+KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyArIDEpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgc2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBy
b3BlcnR5U3RvcmFnZSBncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qg
b2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3Jh
Z2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgcmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEm
LCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3Ry
dWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNp
Z25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2
b2lkKiBhZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxp
bmVTdG9yYWdlOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9i
amVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qg
b2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlz
KSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmlzT2JqZWN0KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmpl
Y3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8g
Y3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJl
bG93LgotICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkK
ICAgICAgICAgewpAQCAtMzA1LDE5ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBp
c1N0cmluZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVy
dHlTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAg
ICAgICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpOyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9
Ci0KLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQo
c2l6ZV90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0
b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4K
ICAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwog
CkBAIC0zMjcsNyArMzQ3LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUlu
aGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJv
cGVydHlTdG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsK
IApAQCAtMzUzLDE0ICszNzMsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcgogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAg
ICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAg
IDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFs
U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAg
ICAgICAgfQogICAgIH07CkBAIC0zODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4
OCwxMSArNDEwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAg
ICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAg
ICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAg
ICAgICAgICAgIEFTU0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGlu
ZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5z
dHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJl
KCktPmlubGluZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAg
ICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsK
ICAgICAgICAgfQogCkBAIC00MDAsMTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5h
bE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpT
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAg
ICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07Cisg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9T
VE9SQUdFX0NBUEFDSVRZXTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5h
bE9iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBA
IC00MzEsOSArNDU2LDkgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dAogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9y
YWdlKTsKIH0KIAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKQoraW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkK
IHsKLSAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFn
ZSk7CisgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9y
YWdlKTsKIH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgp
CkBAIC00NzEsMTQgKzQ5NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlz
KCkgY29uCiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9i
YWxUaGlzVHlwZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFn
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9y
YWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KQotICAgICAgICAgICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAm
JiBzdGF0aWNfY2FzdDx2b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMg
KyAxKSkpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxp
bmVTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXpl
KCkpOworICAgIH0KICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAg
ICBtX3Byb3BlcnR5U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAg
bV9vdXRPZkxpbmVTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAog
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCog
YXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxs
KCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdl
KQoraW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkK
LSAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2Up
CisgICAgLCBtX291dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApA
QCAtNTQyLDE5ICs1NzEsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9y
SUQoCiAgICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxp
bmUgc2l6ZV90IFN0cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAg
ICBpZiAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0
dXJuIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwot
fQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMo
Y29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+
aXNTdWJDbGFzc09mKGluZm8pOwpAQCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTQ2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6
ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkK
IHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7
Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAg
ICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgbmFtZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAg
ICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmpl
Y3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwq
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwg
YW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZh
bHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVu
dFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmlj
RnVuY3Rpb24pKQpAQCAtNzAwLDEzICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlz
RXh0ZW5zaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVy
dHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBv
dXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dP
dXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGlu
ZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0
cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0g
ICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1
cmUoKSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFn
ZSwgc3RydWN0dXJlKCkpOwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNl
dCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsK
ICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAg
ICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93LgogICAgICAg
ICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC03MTQsMTUgKzczMSwxNiBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0
cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldDsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkp
IHsKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2Uo
KTsgCi0gICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0
b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpOwotCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdl
IG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7IAorICAgICAgICBpZiAoY3VycmVudENh
cGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNp
dHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisKKyAgICAgICAgdmFsaWRhdGVP
ZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChv
ZmZzZXQpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zm
c2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRp
b25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAg
ICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0
LDcgKzc1Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAg
ICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwot
ICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVu
dEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzY4LDcgKzc4Niw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBB
U1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xv
YmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAg
ICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jv
d091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBz
ZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0
dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRh
UHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0
MywxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAm
JiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9y
YWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jv
d1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3Rv
cmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFs
dWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3Ry
dWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3Rv
cmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3Rl
ZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Cisg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUo
KSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQog
CkBAIC05MDYsOCArOTI1LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVj
U3RhdAogICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1Zh
bHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5F
IEpTT2JqZWN0KiBSZWdpc3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1
ZSgpKQpAQCAtOTIyLDYgKzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVy
Ojp3aXRoQ2FsCiAgICAgcmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBh
dGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisv
LyB0aGUgYmFzZSBpczoKKy8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBv
dXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czog
dGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
aWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNl
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zm
c2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOwor
ICAgIEFTU0VSVCghKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShv
ZmZzZXQpOworfQorCitpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAg
ICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMTAgKzU2LDEwIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQK
ICAgICBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJl
KCktPmhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxl
U2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2Fj
aGVhYmxlU2xvdHMpOwotICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBp
ZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTgwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90
KQotICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpl
eGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFy
cmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNo
Q3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVy
biBpdGVyYXRvcjsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAgICAgICAgCkBAIC02MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
Ci0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAg
Ym9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChpID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAg
IG9mZnNldCA9IGkgKyBtX29mZnNldEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCkBAIC04OCwxMiArODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRh
KiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0
eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBt
X2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5n
KGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1f
b2Zmc2V0QmFzZSA9IG9iamVjdC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlw
ZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1
aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
QmFzZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0
cmluZ3M7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAJKHJldmlzaW9uIDEyMTgwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFz
T2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAg
ICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5z
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAg
aWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
cyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTIxODA1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBq
c0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
c2l6ZV90JiBzbG90T2Zmc2V0KQorICAgIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgc2xvdE9m
ZnNldCkKICAgICB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGJhc2UuYXNDZWxsKCk7CiAgICAg
ICAgIHNpemVfdCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJzCiAgICAgcmV0dXJuIGNwdXNU
b1VzZTsKIH0KIAotCiBPcHRpb25zOjpFbnRyeSBPcHRpb25zOjpzX29wdGlvbnNbT3B0aW9uczo6
bnVtYmVyT2ZPcHRpb25zXTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhl
IG9wdGlvbnM6CkBAIC0xMTksMTEgKzExOCwxMSBAQCBjb25zdCBPcHRpb25zOjpFbnRyeUluZm8g
T3B0aW9uczo6c19vcHRpCiB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogewogICAgIC8vIElu
aXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgot
I2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfKSBcCisj
ZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8pICAgIFwK
ICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsKICAgICBKU0NfT1BUSU9OUyhGT1JfRUFDSF9P
UFRJT04pCiAjdW5kZWYgRk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAgICAgCiAgICAgLy8gQWxsb3cg
ZW52aXJvbm1lbnQgdmFycyB0byBvdmVycmlkZSBvcHRpb25zIGlmIGFwcGxpY2FibGUuCiAgICAg
Ly8gVGhlIGV2biB2YXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBvcHRpb24gcHJlZml4ZWQg
d2l0aAogICAgIC8vICJKU0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIgQEAgdm9pZCBPcHRpb25zOjpp
bml0aWFsaXplKCkKICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgIkpT
Q18iICNuYW1lXyk7CiAgICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZP
Ul9FQUNIX09QVElPTgotICAgIAogI2VuZGlmIC8vIFJVTl9USU1FX0hFVVJJU1RJQ1MKIAorI2lm
IDAKKyAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgor
I2VuZGlmCisgICAgCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFr
ZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVw
KCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhy
ZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxMjE4MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFByb3BlcnR5TWFwSGFz
aFRhYmxlX2gKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCisjaW5jbHVkZSAiUHJv
cGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAtNzIsMTEgKzczLDExIEBAIGlu
bGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQgdikKIAogc3RydWN0IFByb3BlcnR5
TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKLSAgICB1bnNpZ25lZCBvZmZzZXQ7Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
V3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50
cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBr
ZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKQorICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShr
ZXkpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCkBAIC0xNzQsOCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIHRvIG1haW50
YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KICAg
ICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVk
T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9m
ZnNldCgpOworICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CisgICAg
CisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChKU1R5cGUpOwogCiAgICAgLy8gQ29weSB0
aGlzIFByb3BlcnR5VGFibGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2Fw
YWNpdHkgcHJvdmlkZWQuCiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xv
YmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3
ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVk
IG1fa2V5Q291bnQ7CiAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBW
ZWN0b3I8dW5zaWduZWQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4gPiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
RW1wdHlFbnRyeUluZGV4ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zm
c2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5
T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0
KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNl
dHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykp
OworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFi
bGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsy
OTEsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQog
CiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVu
c2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0
KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90
aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMp
Ci0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVk
Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRv
cHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsK
IH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCAr
NDcyLDMxIEBAIGlubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICBy
ZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwog
fQogCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitp
bmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7
Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2Rl
bGV0ZWRPZmZzZXRzLT5yZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5s
aW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQp
CitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1f
ZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAg
ICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlm
IChoYXNEZWxldGVkT2Zmc2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7
CisgICAgCisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4g
c2l6ZSgpOworICAgIAorICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsK
K30KKwogaW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29w
eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0Nh
cGFjaXR5KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5
OSw3ICs1MTMsNyBAQCBpbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7
CiAgICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7
CiAgICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVk
T2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQg
Kz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRf
aAorCisjaW5jbHVkZSAiSlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElO
RV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNlbHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFD
SVRZIDQKKyNlbmRpZgorCit0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNv
bnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9w
ZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lU
WTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlu
bGluZVN0b3JhZ2VDYXBhY2l0eTsKKworLy8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBi
ZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tP
ZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlP
ZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsK
K2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wg
aXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVP
ZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3Jh
Z2UoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2UoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9y
YWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90
c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7Citp
bmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUpOworCitp
bmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsK
K30KKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5
cGUgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0o
dHlwZSk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQo
b2Zmc2V0ID09IGludmFsaWRPZmZzZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVj
dFR5cGUKKyAgICAgICAgICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lu
bGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBj
aGVja09mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwor
fQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpT
VHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJU
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAg
cmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGlu
ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0
KTsKKyAgICByZXR1cm4gb2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxp
bmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7
Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lu
bGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6
ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7Cisg
ICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQo
b2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQor
CitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1
cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVj
a09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9m
ZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxh
c3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0
eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBl
ICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxp
bmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9m
ZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAgIHJldHVybiBu
ZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAg
Ym9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5
cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNl
dDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFs
dWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShK
U1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2
b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAg
ICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJG
dW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpT
VmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisg
ICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09i
amVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VU
VEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBi
dWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAg
ICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBj
bGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUg
dGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBtX29mZnNldCA9
IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2Fj
aGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwog
Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNs
b3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBz
ZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAg
ICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0
eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9m
ZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3Qq
IGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmpl
Y3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAg
bV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQs
NyArNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBzaXpl
X3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQoKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzcz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7
CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE4MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUo
Z2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZv
KQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQot
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkg
PyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNl
dChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2lu
ZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERh
dGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1f
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwg
bV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAg
ICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMo
ZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMt
PnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJ
bmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5n
KQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxp
bmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rp
b25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFi
bGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAg
ICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29w
eShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBT
dHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9w
cm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOwor
ICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1
Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0
cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBu
ZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAg
ICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBj
dXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQog
ewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0
eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQor
c2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkK
IHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1f
b3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURp
Y3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQor
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVl
SW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYm
IHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0g
bm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1f
b2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgb2Zmc2V0ID0g
ZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJh
bnNpdGlvbjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHdlIG1h
eSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFkeSBhIHRy
YW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1dGVzLCBi
dXQKQEAgLTMyNyw4ICszMjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0
U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljVmFsdWUpOwotICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
ID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHRy
YW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICBpZiAodHJh
bnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkKKyAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAg
ICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAgICAgCkBAIC0zNTMsMTUgKzM1MywxNSBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgfQogCiAgICAg
b2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmICh0cmFuc2l0aW9uLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKQotICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
KyAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5
KCk7CiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUt
Pm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICByZXR1
cm4gdHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3Vu
dCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFs
dWVzKHByb3BlcnR5Q291bnQpOwotCisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0
Rm9yKG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3Ig
ZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxl
OjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyLCArK2kpIHsKICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0
T2Zmc2V0KGl0ZXItPm9mZnNldCk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFi
bGUgdG8gaGF2ZSB0aGUgbmV3IHByb3BlcnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9m
ZnNldCA9IGk7CisgICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5
IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXRE
aXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ld
KTsKIAogICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAg
ICB9CkBAIC01NjgsNyArNTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0
aW9uYXJ5UwogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VS
VCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAg
c2l6ZV90IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6
ZSgpID4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgZ3Jvd1Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNW
YWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUp
OworICAgIGlmIChvdXRPZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAg
ICBncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXpl
X3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hl
KTsKQEAgLTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdp
dGhvdXRUCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhn
bG9iYWxEYXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJv
cGVydHlOYW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVy
dHlOYW1lKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBA
QCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBh
ZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBv
d25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBu
b09mZnNldCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5
VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlU
YWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV90eXBlSW5mby50eXBlKCkpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkK
IHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAg
ICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlm
ICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAg
ICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9
IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlm
ICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4g
aW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAg
ICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSAr
Njg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAg
ICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1
dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQ
cm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNl
dChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBA
IHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVk
IG5ld09mZnNldDsKLQotICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQo
KSkKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0
KCk7Ci0gICAgZWxzZQotICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUo
KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRP
ZmZzZXQobV90eXBlSW5mby50eXBlKCkpOwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJv
cGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSkpOwogCkBAIC03MTEsNyArNzA2LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3MTksNyBAQCBzaXplX3QgU3Ry
dWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByCiAgICAgaWYgKCFwb3NpdGlvbi5maXJzdCkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9u
LmZpcnN0LT5vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmly
c3QtPm9mZnNldDsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAg
ICBtX3Byb3BlcnR5VGFibGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjE4MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtODcsOSArODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAzLDMyICsxMDMsMzIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAg
ICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVu
c2lvbnM7IH0KICAgICAgICAgYm9vbCBkaWRUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
aWRUcmFuc2l0aW9uOyB9Ci0gICAgICAgIGJvb2wgcHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
KQorICAgICAgICBib29sIHB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5
U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+
PSBvdXRPZkxpbmVTaXplKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90
c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChvdXRPZkxp
bmVDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudFNpemUgPT0gb3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9w
cm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJU
KHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkpOwogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9m
ZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRh
YmxlLT5zaXplKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgp
ID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxT
dG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHko
KTsKICAgICAgICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVk
TmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpOyAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IHN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAogICAgICAgICBT
dHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2Jq
ZWN0Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAg
ICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQ
cm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlw
ZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0K
ICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9k
aWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTE0OSwxOCArMTQ5LDEx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNo
YWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lE
KCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyBy
ZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNz
SW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7
CisgICAgICAgIH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0
cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKIAotICAgICAgICB2b2lkIGdyb3dQcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsg
cmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAgICAgdW5zaWduZWQgcHJv
cGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUt
PnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCAr
IDEpKTsgfQotICAgICAgICBzaXplX3QgaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3Q7Ci0g
ICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsKLQotICAgICAgICBzaXpl
X3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQo
SlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHZvaWQgZ3Jvd091
dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5
OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bkZpbmFs
T2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8u
dHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6
ZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXpl
IC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAg
ICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVj
dCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUo
KSAhPSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RP
ZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNp
emUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNs
YXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkg
eworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5ID0gdGhpcy0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90
YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVDYXBhY2l0eTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFz
dE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9y
YWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdHlwZUluZm8udHlw
ZSgpID09IEZpbmFsT2JqZWN0VHlwZTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxp
bmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNJbmxpbmVT
dG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCByZXN1bHQ7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6
ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0
ICsgMTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9w
cm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4g
bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsK
KyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkg
PT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlu
bGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJz
dFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGlu
ZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
cHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBt
X3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgLSAxOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgICAgICB9CisgICAg
ICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgpCisg
ICAgICAgICAgICAgICAgJiYgb2Zmc2V0IDw9IGxhc3RWYWxpZE9mZnNldCgpOworICAgICAgICB9
CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2Vs
bComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAg
ICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJv
dG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJs
ZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAg
ICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0K
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVT
cGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50
ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzc0LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAg
dm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBz
YW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5v
dCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQg
PyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JM
YXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3Rv
dHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICs0MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZzZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKIAogICAg
ICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAtMzM2LDEwICs0MzUsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90
cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKIAotICAgICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5OworICAgICAgICB1aW50MzJfdCBtX291dE9mTGluZUNhcGFjaXR5OwogCiAg
ICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFjY291bnQgZm9yIGFub255bW91cyBzbG90cwot
ICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0Owog
CiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgICAgICBib29sIG1f
aXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAgLTM1MywyNiArNDUyLDI2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9
OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zm
c2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsK
IAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+Zmlu
ZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRy
eS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZz
ZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJl
OjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAg
IGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGlu
dmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3Bl
cnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJzdDsKLSAgICAgICAgcmV0
dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50
cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAgICAgCiAgICAgaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150836</attachid>
            <date>2012-07-04 12:59:43 -0700</date>
            <delta_ts>2012-07-04 13:59:18 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_18.diff</filename>
            <type>text/plain</type>
            <size>262307</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDYgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1wbEA0
QEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxANEBA
WgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2Jh
bFByb3BlcnR5SW5mb0AxMkBIQFoKQEAgLTIxNSw3ICsyMTIsNiBAQCBFWFBPUlRTCiAgICAgP2ds
b2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgogICAgID9n
bG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCiAgICAgP2dyb3dASGFuZGxlU2V0QEpT
Q0BAQUFFWFhaCi0gICAgP2dyb3dQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlNDQEBRQUVQQVY/
JFdyaXRlQmFycmllckJhc2VAVzRVbmtub3duQEpTQ0BAQDJAQUFWSlNHbG9iYWxEYXRhQDJASUlA
WgogICAgID9oYXNJbnN0YW5jZUBKU09iamVjdEBKU0NAQFNBX05QQVYxMkBQQVZFeGVjU3RhdGVA
MkBWSlNWYWx1ZUAyQDJAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFCRV9OUEFW
RXhlY1N0YXRlQDJASUBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBWUHJvcGVydHlOYW1lQDJAQFoKQEAgLTMyOCw3ICszMjQsNiBAQCBFWFBPUlRT
CiAgICAgP3N0b3BQcm9maWxpbmdAUHJvZmlsZXJASlNDQEBRQUU/QVY/JFBhc3NSZWZQdHJAVlBy
b2ZpbGVASlNDQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKICAgICA/c3Rv
cFNhbXBsaW5nQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhYWgogICAgID9zdWJzdHJpbmdTaGFyaW5n
SW1wbEBVU3RyaW5nQEpTQ0BAUUJFP0FWMTJASUlAWgotICAgID9zdWdnZXN0ZWROZXdQcm9wZXJ0
eVN0b3JhZ2VTaXplQFN0cnVjdHVyZUBKU0NAQFFBRUlYWgogICAgID9zd2VlcGVyQEhlYXBASlND
QEBRQUVQQVZJbmNyZW1lbnRhbFN3ZWVwZXJAMkBYWgogICAgID9zeW50aGVzaXplUHJvdG90eXBl
QEpTVmFsdWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3Ro
aXNPYmplY3RARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQVZKU09iamVjdEAyQFhaCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEwOTQsNiArMTA5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFByb3BlcnR5T2Zmc2V0Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1
bnRpbWVcUHJvcGVydHlTbG90LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTIyMyw2ICsyMjMsNyBAQAogCQkwRkY0Mjc2NTE1OTFBMUNFMDA0Q0I5RkYgLyog
REZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkY0Mjc2MjE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGNDI3NzEx
NTkyNzVENTAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZG
IC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovOyB9OwogCQkwRkY0Mjc3MjE1OTI3NUQ4MDA0
Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkYxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVH
bG9iYWxTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkY3MTY4QzE1QTNCMjM1MDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcxNjhBMTVBM0Iy
MzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjkyMkQ0MTRGNDZCNDEwMDQxQTI0RSAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi87IH07CiAJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZG
Qzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1
ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05NTcsNiArOTU4LDcgQEAKIAkJMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rp
c2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEaXNhc3Nl
bWJsZXIuaDsgcGF0aCA9IGRmZy9ERkdEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0
dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb2x2ZUdsb2Jh
bFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzZGMTU5Mjc1
RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5T2Zmc2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBo
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA3LDYgKzIxMDksNyBAQAog
CQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKIAkJCQk2
NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAogCQkJ
CTY1NDAwQzEwMEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLAorCQkJ
CTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovLAogCQkJCTY1
NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLAogCQkJCTY1NjIx
RTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQk2NUMwMkZCQjA2
Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovLApAQCAtMjgxMSw2ICsyODE0LDcgQEAKIAkJ
CQkwRkY0Mjc0QjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkY0Mjc2NTE1OTFBMUNFMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkY0Mjc3MjE1OTI3NUQ4MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3Bl
cnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAxOCw2ICsxMDE4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX0xEUl9pbW1fVDMs
IHJuLCBydCwgaW1tLmdldFVJbnQxMigpKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGxkcldpZGU4Qml0SW1tZWRpYXRlKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4s
IHVpbnQ4X3QgaW1tZWRpYXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lz
dGVyczo6cGMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIo
T1BfTERSX2ltbV9UMywgcm4sIHJ0LCBpbW1lZGlhdGUpOworICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHJDb21wYWN0KFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRo
dW1iSW1tZWRpYXRlIGltbSkKICAgICB7CkBAIC0yMTE3LDYgKzIxMjMsNDYgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIDY7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7Cisg
ICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1
Y3Rpb25TdGFydCk7CisgICAgICAgIHN3aXRjaCAocHRyWzBdICYgMHhGRkYwKSB7CisgICAgICAg
IGNhc2UgT1BfTERSX2ltbV9UMzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9Q
X0FERF9pbW1fVDM6CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweEYwMDApKTsKKyAg
ICAgICAgICAgIHB0clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfTERS
X2ltbV9UMzsKKyAgICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHgwRjAwKSA8PCA0Owor
ICAgICAgICAgICAgcHRyWzFdICY9IDB4RjBGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICAgICAgY2FjaGVGbHVzaChwdHIsIHNpemVvZih1aW50MTZfdCkgKiAyKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIHN3
aXRjaCAocHRyWzBdICYgMHhGRkYwKSB7CisgICAgICAgIGNhc2UgT1BfTERSX2ltbV9UMzoKKyAg
ICAgICAgICAgIEFTU0VSVCghKHB0clsxXSAmIDB4MEYwMCkpOworICAgICAgICAgICAgcHRyWzBd
ICY9IDB4MDAwRjsKKyAgICAgICAgICAgIHB0clswXSB8PSBPUF9BRERfaW1tX1QzOworICAgICAg
ICAgICAgcHRyWzFdIHw9IChwdHJbMV0gJiAweEYwMDApID4+IDQ7CisgICAgICAgICAgICBwdHJb
MV0gJj0gMHgwRkZGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfQUREX2lt
bV9UMzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FjaGVGbHVzaChwdHIs
IHNpemVvZih1aW50MTZfdCkgKiAyKTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNl
dCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiAr
Mjk1LDM2IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBBc3NlbWJsZXJMYWJlbCBt
X2xhYmVsOwogICAgIH07CisgICAgCisgICAgLy8gQ29udmVydGlibGVMb2FkTGFiZWw6CisgICAg
Ly8KKyAgICAvLyBBIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlY29yZHMgYSBsb2FkUHRyIGluc3Ry
dWN0aW9uIHRoYXQgY2FuIGJlIHBhdGNoZWQgdG8gYW4gYWRkUHRyCisgICAgLy8gc28gdGhhdDoK
KyAgICAvLworICAgIC8vIGxvYWRQdHIoQWRkcmVzcyhhLCBpKSwgYikKKyAgICAvLworICAgIC8v
IGJlY29tZXM6CisgICAgLy8KKyAgICAvLyBhZGRQdHIoVHJ1c3RlZEltbVB0cihpKSwgYSwgYikK
KyAgICBjbGFzcyBDb252ZXJ0aWJsZUxvYWRMYWJlbCB7CisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IFRlbXBsYXRlQXNzZW1ibGVyVHlwZT4KKyAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOworICAgICAgICAK
KyAgICBwdWJsaWM6CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsKCkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbChBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGU+KiBtYXNtKQorICAgICAgICAgICAgOiBtX2xh
YmVsKG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xhYmVsLmlzU2V0KCk7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBBc3NlbWJsZXJM
YWJlbCBtX2xhYmVsOworICAgIH07CiAKICAgICAvLyBEYXRhTGFiZWxQdHI6CiAgICAgLy8KQEAg
LTU2Miw2ICs1OTIsMTEgQEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fYXNz
ZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KKyNlbHNlCisgICAgTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBsYWJlbCgpOworICAgIH0KICNlbmRpZgogICAgIAogICAgIExh
YmVsIGxhYmVsKCkKQEAgLTY3Miw2ICs3MDcsMTYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJlYWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9j
YXRpb24oKSk7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZChD
b2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisgICAgeworICAgICAgICBBc3NlbWJs
ZXJUeXBlOjpyZXBsYWNlV2l0aExvYWQobGFiZWwuZGF0YUxvY2F0aW9uKCkpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihDb2RlTG9j
YXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwpCisgICAgeworICAgICAgICBBc3NlbWJsZXJUeXBl
OjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbC5kYXRhTG9jYXRpb24oKSk7Cisg
ICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgQ29kZUxvY2F0aW9uTmVhckNhbGw7CiBjbGFzcyBD
b2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0OwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
MzI7CiBjbGFzcyBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI7CitjbGFzcyBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQ7CiAKIC8vIFRoZSBDb2RlTG9jYXRpb24qIHR5cGVzIGFyZSBhbGwgcHJl
dHR5IG11Y2ggZG8tbm90aGluZyB3cmFwcGVycyBhcm91bmQKIC8vIENvZGVQdHIgKG9yIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciwgdG8gZ2l2ZSBpdCBpdHMgZnVsbCBuYW1lKS4gIFRoZXNlCkBAIC02
Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgZGF0YUxh
YmVsUHRyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIg
ZGF0YUxhYmVsMzJBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgICBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0IGRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChpbnQgb2Zmc2V0KTsKKyAgICBDb2Rl
TG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgY29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNl
dCk7CiAKIHByb3RlY3RlZDoKICAgICBDb2RlTG9jYXRpb25Db21tb24oKQpAQCAtMTQ2LDYgKzE0
OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihsb2NhdGlvbikpIHt9CiB9OwogCitjbGFzcyBDb2RlTG9jYXRpb25Db252ZXJ0
aWJsZUxvYWQgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uIHsKK3B1YmxpYzoKKyAgICBDb2Rl
TG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoKSB7IH0KKyAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25D
b252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxvY2F0aW9uKQorICAgICAgICA6
IENvZGVMb2NhdGlvbkNvbW1vbihsb2NhdGlvbikgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKHZvaWQqIGxvY2F0aW9uKQorICAgICAgICA6IENvZGVMb2NhdGlv
bkNvbW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7IH0KK307CisKIGlubGlu
ZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omluc3RydWN0aW9u
QXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zm
c2V0KTsKQEAgLTE5NCw2ICsyMDUsMTIgQEAgaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJlbENv
bXBhY3QgQ29kZQogICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0KHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7CiB9CiAKK2lubGlu
ZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQoreworICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYg
TGlua0J1ZmZlcjo6ZmluYWxpemUKICAgICAKICAgICBkYXRhTG9nKCIgICAgQ29kZSBhdCBbJXAs
ICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8
Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgp
KTsKICAgICBpZiAoIXRyeVRvRGlzYXNzZW1ibGUocmVzdWx0LmNvZGUoKSwgbV9zaXplLCAiICAg
ICIsIFdURjo6ZGF0YUZpbGUoKSkpCi0gICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRpc2Fz
c2VtYmx5IGF2YWlsYWJsZT4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgICA8bm8gZGlzYXNz
ZW1ibHkgYXZhaWxhYmxlPlxuIik7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICAg
ICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IERhdGFMYWJlbENvbXBh
Y3Q7CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgRGF0YUxhYmVsMzI7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIERhdGFMYWJlbFB0cjsK
KyAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBDb252ZXJ0
aWJsZUxvYWRMYWJlbDsKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCiAgICAgdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlcjo6TGlua1JlY29yZCBMaW5rUmVjb3JkOwogICAgIHR5cGVkZWYgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaW5rVHlwZSBKdW1wTGlua1R5cGU7CkBAIC0xODAsNiArMTgxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Qo
TWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJl
bC5tX2xhYmVsKSkpOwogICAgIH0KIAorICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBs
b2NhdGlvbk9mKENvbnZlcnRpYmxlTG9hZExhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZChNYWNyb0Fzc2VtYmxlcjo6Z2V0TGlua2Vy
QWRkcmVzcyhjb2RlKCksIGFwcGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7CisgICAgfQorCiAg
ICAgLy8gVGhpcyBtZXRob2Qgb2J0YWlucyB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YgdGhlIGNhbGws
IGdpdmVuIGFzIGFuIG9mZnNldCBmcm9tCiAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSBjb2RlLgog
ICAgIHVuc2lnbmVkIHJldHVybkFkZHJlc3NPZmZzZXQoQ2FsbCBjYWxsKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyKGRlc3QsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKICAgICB9CisgICAgCisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwg
cmVzdWx0KHRoaXMpOworICAgICAgICBBU1NFUlQoYWRkcmVzcy5vZmZzZXQgPj0wICYmIGFkZHJl
c3Mub2Zmc2V0IDw9IDI1NSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcldpZGU4Qml0SW1tZWRp
YXRlKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KIAogICAgIHZvaWQgbG9hZDgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92bF9tcihhZGRyZXNzLCBkZXN0KTsKICAgICB9CiAKKyAgICBDb252ZXJ0aWJsZUxvYWRM
YWJlbCBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQgPSBDb252ZXJ0aWJs
ZUxvYWRMYWJlbCh0aGlzKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICB2b2lkIGFkZERvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRzZF9tcihhZGRyZXNzLm1f
cHRyLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CiAgICAgfQogCisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwg
cmVzdWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgdm9pZCBsb2FkUHRyKEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUs
IGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBh
dGNoQnVmZmVyLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDI0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUo
cmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAg
ICB9CisgICAgCisgICAgdm9pZCByZXBsYWNlV2l0aExvYWQoQ29kZUxvY2F0aW9uQ29udmVydGli
bGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRo
TG9hZChsYWJlbCk7CisgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29t
cHV0YXRpb24oQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBzZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShDb2RlTG9j
YXRpb25Db252ZXJ0aWJsZUxvYWQgbGFiZWwsIGJvb2wgaXNBY3RpdmUpCisgICAgeworICAgICAg
ICBpZiAoaXNBY3RpdmUpCisgICAgICAgICAgICByZXBsYWNlV2l0aExvYWQobGFiZWwpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJl
bCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiA1OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZfNjQp
CisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0cisr
OworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01PVl9H
dkV2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAg
ICAgKnB0ciA9IE9QX01PVl9HdkV2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lk
KiBpbnN0cnVjdGlvblN0YXJ0KQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisjaWYgQ1BVKFg4Nl82NCkK
KyAgICAgICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQorICAgICAgICAgICAgcHRyKys7
CisjZW5kaWYKKyAgICAgICAgc3dpdGNoICgqcHRyKSB7CisgICAgICAgIGNhc2UgT1BfTU9WX0d2
RXY6CisgICAgICAgICAgICAqcHRyID0gT1BfTEVBOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgT1BfTEVBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBj
YWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlk
T3AoRXhlY1N0YXRlCiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIG9wID0gImdldF9i
eV9pZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
OgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRfb3V0X29mX2xpbmUiOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWRfc2Vs
ZiI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzMyw2ICsxMDM2LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9zZWxmOgogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZF9wcm90bzoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46CkBA
IC0xMDU5LDYgKzEwNjMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVj
LCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF9vdXRfb2ZfbGluZTogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX291dF9vZl9saW5lIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
cmVwbGFjZSIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDEwICsxMDc5LDE4IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjAyOSw3ICsyMDQ1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmlu
c3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwogICAgICAgICAg
ICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUpKSB7CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAg
ICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCkBAIC0y
MDM5LDYgKzIwNTcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQo
Y3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQog
ICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51
LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsOSArNDgsOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tCiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1Zh
bHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNl
dChvZmZzZXQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBm
YWxzZSk7CiAgICAgCiAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwgU3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CkBAIC04OCw3ICs4
OCw3IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICAgICAg
CiAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNw
ZWNpZmljVmFsdWUpOwotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
aWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwpAQCAtMTU2
LDEyICsxNTYsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3Bl
Y2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5v
dEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpIHsK
ICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAg
ICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5vdEZv
dW5kKQorICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVjdHVyZVNldC5zaXplKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xNzYsMTAgKzE3NiwxMCBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXNJZ25vcmVkOwogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAg
ICAgICAgc2l6ZV90IG15T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgICAgICpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3Bl
Y2lmaWNWYWx1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChteU9mZnNldCA9PSBu
b3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkgewog
ICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVj
dHVyZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlz
VmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
bV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIzLDEx
ICsyMjMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNl
dCA9PSBub3RGb3VuZCk7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQubV9v
ZmZzZXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpIHsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zm
c2V0KSkgewogICAgICAgICByZXN1bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAgICAg
IHJlc3VsdC5tX3N0cnVjdHVyZVNldC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFpbi5j
bGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEdldEJ5SWRTdGF0dXNfaAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVk
ZSA8d3RmL05vdEZvdW5kLmg+CiAKQEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICBH
ZXRCeUlkU3RhdHVzKCkKICAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAgICAg
ICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkK
ICAgICB7CiAgICAgfQogICAgIAogICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRlIHN0
YXRlLCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQg
PSBTdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9
IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJl
Kj4gY2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRl
KQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX2No
YWluKGNoYWluKQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAg
IGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWlu
OyB9IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzLgog
ICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1
ZTsgfSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1ZS4K
LSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogICAg
IGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAg
ICAKQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBtX3Nw
ZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1f
b2Zmc2V0OwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2
ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRo
X2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9y
ZXNvbHZlX3dpdGhfdGhpcywgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAg
IG1hY3JvKG9wX2dldF9ieV9pZCwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAg
ICAgIG1hY3JvKG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHByb2Zp
bGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMgdmFs
dWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2No
YWluLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50
c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0X291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4Njgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tCiAgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKLSAgICBp
ZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Ci0gICAg
ICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZAorICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmUpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAKICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAw
LCBvZmZzZXQpOwogICAgIH0KQEAgLTU2LDE2ICs1NywxOCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCiAgICAgQVNTRVJUKGluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dAotICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwKKyAgICAgICAg
ICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0X291dF9vZl9saW5lCisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGlu
ZSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51
LnN0cnVjdHVyZS5nZXQoKTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlv
bls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwogICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOwog
ICAgIEFTU0VSVChjaGFpbik7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVy
ZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICBpZiAob2Zm
c2V0ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmV3
U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVy
ZSwgY2hhaW4sIG9mZnNldCk7CiAjZWxzZQpAQCAtOTQsMjQgKzk3LDI0IEBAIFB1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2Uu
YmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAgIFNpbXBsZVJlcGxhY2UsCiAgICAgICAgICAg
ICAgICAgc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgp
LAogICAgICAgICAgICAgICAgIDAsIDAsCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBhY2Nl
c3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDogewogICAgICAgICBBU1NFUlQoc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1
dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+Z2V0KAogICAg
ICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBp
ZiAob2Zmc2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKAogICAgICAgICAgICAgICAg
IFNpbXBsZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAgICAgc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5nZXQoKSwKQEAgLTExOSwxNCArMTIyLDE0IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBz
dHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLmdldCgpLAogICAgICAgICAgICAgICAg
IG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAg
IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogI2Vsc2UgLy8gRU5B
QkxFKEpJVCkKLSAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgaW52YWxpZE9mZnNldCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZp
c2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFB1dEJ5SWRT
dGF0dXNfaAogI2RlZmluZSBQdXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zm
c2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUoMCkKICAgICAg
ICAgLCBtX25ld1N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hhaW4oMCkKLSAg
ICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zm
c2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4sCi0gICAgICAgIHNp
emVfdCBvZmZzZXQpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgOiBt
X3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKICAg
ICAgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC03NCw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAhbV9vbGRTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQo
KG1fc3RhdGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fbmV3U3RydWN0dXJlKTsKICAgICAg
ICAgQVNTRVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX3N0cnVjdHVyZUNo
YWluKTsKLSAgICAgICAgQVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoKSA9PSAobV9vZmZzZXQgPT0gbm90Rm91bmQpKTsKKyAgICAgICAg
QVNTRVJUKChtX3N0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQ
YXRoKSA9PSAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkpOwogICAgIH0KICAgICAKICAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0K
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0
dXJlOyB9CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJ1Y3R1cmVDaGFpbjsgfQotICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQorICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1fb2xk
U3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJl
Q2hhaW4qIG1fc3RydWN0dXJlQ2hhaW47Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3Bl
cnR5T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwx
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIEVOQUJMRShMTElOVCkgfHwgRU5BQkxFKEpJ
VCkKIHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JTdHJ1Y3R1cmUoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpjb2RlQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnRpZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFs
dWUpOwotICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CiAgICAgCiAg
ICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoUmVzb2x2ZUdsb2JhbFN0YXR1czo6U2ltcGxl
LCBzdHJ1Y3R1cmUsIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CiB9CisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKSB8fCBFTkFCTEUoSklUKQogCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21w
dXRlRm9yTExJbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmgJKHJldmlzaW9uIDEyMTg2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVzb2x2ZUdsb2Jh
bFN0YXR1c19oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZz
ZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01
MSw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1
cygKLSAgICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90
IG9mZnNldCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAg
ICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMg
QEAgcHVibGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gVGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7
CiAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9
OyAvLyBjbGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxB
cmVVc2luZ0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgaWYgKCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0
dXJlIHNldCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAg
ICAgU3RydWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGlu
dDhfdCBzY3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25l
OworICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAg
ICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3Qg
ZGVsdGFDaGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDE2X3Qgc3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZf
dCBzdHJ1Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVy
dHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1
cmVUb0NvbXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3Rv
cmFnZUxvYWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDE2X3QgZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50
ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRp
b25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNl
dCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXgg
YmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0
YXR1cyYpOwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDb25zdGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0
KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNl
SW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
CiB7CiAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zm
c2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VS
VCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAg
IG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OwotICAgIH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRU
b0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9
IDA7Ci0gICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3Jh
cGgoCiAgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNj
ZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vz
c0RhdGE7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zm
c2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uo
b2Zmc2V0KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRp
Zmllck51bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3Jh
Z2VBY2Nlc3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVj
a1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMu
c3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdl
OwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBT
dHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgp
LnNpbmdsZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9
IDA7CkBAIC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAogICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4o
KVtpXTsKICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3Vy
cmVudE9iamVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5s
aW5lU3RvcmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVj
dHVyZVNldCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAg
IAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0
aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2Un
cmUgZG9uZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAg
ICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVy
LCB1c2VJbmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAg
ICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cHJlcGFyZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9i
eV9pZAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
XTsKQEAgLTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xv
dCksIGdldFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZDogeworICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CkBAIC0yMjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
b3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBO
b2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kXTsKQEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRl
ICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQo
cHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0
b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCkt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihK
U09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAg
IG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3Rv
cmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9w
SW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdl
LCBiYXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFn
ZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFj
Y2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsK
KyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZl
VG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VB
Y2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0Rh
dGEpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAg
ICAgICAgICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1
cy5vbGRTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5l
d1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRT
dHJ1Y3R1cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRC
eUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0Owog
ICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAg
ICAgaWYgKHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5v
ZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVv
ZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNp
emUoKSksCkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsK
LSAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVz
Lm9mZnNldCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlk
ZW50aWZpZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAt
MjczOCw4ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdl
dEJ5T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgaWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5l
U3RvcmFnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1f
Z2xvYmFsUmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVz
b2x2ZSBpbmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29w
ZWRfdmFyOgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmU6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2Fs
bFRvU2xvd0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhH
ZW5lcmF0b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9E
b25lID0gZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAg
aW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3Bl
cnR5QWNjZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0
Y2guZGZnLmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYs
NyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
SW1tLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVj
aywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxv
YWRPclN0b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3Is
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBA
IHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0s
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9h
ZE9yU3RvcmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxv
YWRMb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJh
dG9yLApAQCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAg
ICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJ
bW0oc3RydWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hl
Y2spCisgICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQp
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3Jl
KQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJv
cGVydHlBY2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JT
dG9yZTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgc3RhdGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBj
b25zdCBGdW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGlj
IHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNv
bXBhY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAK
QEAgLTUyLDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3Mo
Q29kCiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0
aGUgbG9hZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZn
LmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0
TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZl
cnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VM
b2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICBpZiAoY29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOwor
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9M
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAg
ICBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Mb2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJB
dE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1Yklu
Zm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkg
KiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpOwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVs
dGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
VGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Cisg
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Bh
eWxvYWRMb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRM
b2FkT3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRS
ZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAt
MTA1LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUK
ICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNo
LCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxv
Y2F0aW9uTGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91
dGluZSkKK3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgc2l6ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDb2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNs
b3dDYXNlTGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5
LDEzICsxNDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Ygog
ICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHVi
Sml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1
bHRHUFIpOworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7
CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1Ykpp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zm
c2V0KG9mZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAj
ZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3Qt
PmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisg
ICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAg
LTI1Myw3ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
CiAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhl
YywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAg
ICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksMTIgKzM2MCwyMCBA
QCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICB8
fCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CiAg
ICAgICAgICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6
OkdldHRlcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIp
OwotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2
ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9m
TGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0
Y2hHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNl
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9w
ZXJhdGlvbkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg1LDEzICs0MDQs
MjcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAg
ICAgaGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0dWJKaXQuanVt
cChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAg
IGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVz
dWx0R1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICAgICAgc3R1YkppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAg
ICAgICAgICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7CisgICAgICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0
VGFnR1BSKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBz
dHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxh
dGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAg
ICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7
CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAg
ICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5k
aWYKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsK
ICAgICAgICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDUwLDcgKzQ4Myw3
IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGUKICAgICAKICAgICBB
U1NFUlQoc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KTsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjcsNyAr
NjAwLDcgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3Jv
QXNzZW1ibGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQ
UlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3Jp
dGVCYXJyaWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkp
KSkgewogICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hH
UFIoYmFzZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRy
dWU7CiAgICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNjE5LDIw
IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkK
LSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0
eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9y
YWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNj
cmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFs
dWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAg
IH0KICNlbmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1
dFRyYW5zaXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBp
ZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0
b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkp
KQorICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJ
bklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRj
aEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIp
OworICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgIGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1
YkppdC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uo
c2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAg
ICAgICAKQEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhl
Y1N0YXRlKiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJl
YWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAg
ICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2Vs
bCk7CkBAIC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChF
eGVjU3RhdAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFs
bG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgs
NyArNTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENv
bXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHBy
b3BlcnR5U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21w
YWN0IHRhZ0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZz
ZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIp
OwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNo
ID0gbV9qaXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApAQCAt
NTUwLDcgKzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8K
ICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNj
ZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBz
dHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdM
b2FkV2l0aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVM
YWJlbCwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+
KHJlc3VsdFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTY1
LDcgKzU2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAog
ICAgIHdyaXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBX
cml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGli
bGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7
CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9IG1f
aml0LnN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29t
cGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQ
cm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAg
ICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAg
ICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJv
cGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21w
YWN0KHRhZ1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkRhdGFMYWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAg
ICAgICAgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5
bG9hZEdQUiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9m
TGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVz
dWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTEs
OCArMzg5MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RNYXRjaCA9IG1faml0LmJyYW5j
aFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwog
CiAgICAgICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxS
ZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJ
VF9BU1NFUlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJl
YWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQ
UiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwog
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRQYXlsb2Fk
R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXls
b2FkR1BSKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcs
NyArNDk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENv
bXBpbGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEp
KSk7CiAgICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAg
SklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQor
ICAgICAgICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQu
bG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVs
IGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcsOCArNTE4LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9w
ZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBj
b2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBh
dGNoLCBzbG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50
OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBk
b25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVz
dWx0R1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAg
ICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6
UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzYs
NyArNTM3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAg
ICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVy
Rm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJl
bCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBz
dG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1
ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCiAgICAgSklUQ29t
cGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01NjYsNyArNTY4LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNl
R1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQot
ICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRh
TGFiZWxDb21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9u
ZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVl
R1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3Bl
cnR5QWNjZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3Rv
cmFnZUxvYWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9y
ZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAg
ICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3ICszNTgwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAK
ICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9u
dE1hdGNoID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFs
UmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBK
SVRDb21waWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworI2lmIERGR19FTkFCTEUoSklUX0FT
U0VSVCkKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1
c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5icmVha3Bv
aW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUlu
Zm9HUFIsIEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNp
emVvZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEyMTg2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9y
ZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdl
IHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwotICAgICAgICBt
X2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgICAgICBtX2pp
dC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0YWJsZSB0byBoYXZlIHN0cnVjdHVy
ZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlvdSdyZSBmaW5lCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1NCw3ICszNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChjZWxsKSkgewotICAgICAgICBK
U09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9y
KTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcgKzE4MjIsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAgICAgIEFTU0VSVChzbG90LnNs
b3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5j
YWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5
cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQg
bm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1MSw3ICsxODUxLDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICBzaXplX3QgY291
bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5z
bG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkgewogICAg
ICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpOwpAQCAtMzA0NSw2
ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhfdGhpcyk7CiAgICAgICAg
IE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlf
aWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlfaWQpIHsKICAgICAg
ICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lE
KSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYgKzM1MjgsNyBAQCBza2lwX2lkX2N1
c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6CiAgICAgZ290byAqKCYmc2tp
cF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfb3V0
X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWQpIHsKICAgICAgICAgLyog
cHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG5vcChuKSBub3Aobikgbm9w
KG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICszNTY3LDggQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0
eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0
dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAgIApAQCAtMzYwNSw3
ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICBiYXNlT2Jq
ZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KCpnbG9iYWxE
YXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNd
LnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbN10udS5v
cGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNl
T2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlm
aWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwg
Y2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0zNjM5LDcgKzM2NDMsNyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNP
YmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFu
ZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwor
ICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2Nh
dGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwpAQCAtMzcxNyw3ICszNzIx
LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNWYWx1ZSBleHBlY3RlZFN1YnNj
cmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgpOwogICAgICAgICBpbnQgaW5k
ZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0g
ICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSAw
OwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vic2NyaXB0ICYmIGJhc2VWYWx1
ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSA9PSBpdC0+Y2Fj
aGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgsIG9mZnNldCkpIHsKICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShhc09iamVjdChiYXNl
VmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2FjdGl2YXRpb24p
CiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX09QKG9wX2VxX251bGwp
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpAQCAtMzE5LDggKzMyMCwxMSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3Bl
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ0MSw2ICs0
NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKKyAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYXJndW1lbnRz
X2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92YWwpCkBAIC00
NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5j
KQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRf
YnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwpAQCAtNTM3LDYg
KzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51Lmdl
dC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3Ry
dWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuc3Ry
dWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhv
dFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlQ2hl
Y2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VM
b2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVn
aW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRp
c3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNl
bWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0
dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0ciho
b3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dFN0cnVjdHVyZVRv
Q29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0LnByb3BlcnR5U3Rv
cmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBh
dGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9h
ZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5w
dXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlz
cGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNrOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBnZXRE
aXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4NiwyNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFBy
b3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25J
bmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3Jh
Z2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRp
c3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWws
CiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNr
LCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwKICNlbmRpZgorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKICAgICAgICAgICAgIDog
bV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikKICAgICAgICAgICAg
ICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29tcGFyZSkKICAgICAgICAgICAg
ICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICAgICAsIHByb3Bl
cnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKICNl
bHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1
YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAg
ICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0
ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFj
ZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNw
bGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlz
cGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50
TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNl
bWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNw
bGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAgKQogICAgICAgICAgICAgOiBtX3R5
cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQog
ICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2luKQorICAgICAgICAgICAgLCBw
cm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAgICAgICAgICAgICAsIHB1
dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUpCiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxhY2VtZW50TGFiZWwp
CkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29tcGlsZShmdW5jdGlvbkVudHJ5
QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNv
bXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0
YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0
ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhz
dHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNo
ZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJs
b2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVj
b2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3Qo
c3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUs
IGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3Ry
dWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMg
dm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAg
ICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAg
ICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJv
dG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0
cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAg
fQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hl
ZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3Bl
cnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChn
bG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQg
PSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJl
bnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZz
ZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
R2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1Yklu
Zm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2Fj
aGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAgICAgICAgc3RhdGljIHZvaWQg
Y29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9i
YWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBz
dHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVy
JiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaFB1
dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFj
ZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBz
aXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sq
IGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CisgICAgICAg
IHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKICAgICAgICAg
c3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2Nr
KiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1
bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4q
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGlu
dCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNo
YWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogCiAgICAgICAgIFBhc3NS
ZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJh
bXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVjdHVyZSopOwogICAgICAgICBM
YWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc0Nv
bnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9CiAjZW5kaWYKIAorICAgICAg
ICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90RmluYWwgfTsKKwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMy
X3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21w
aWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZp
ZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlz
TWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3Vs
dFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3Rl
cklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCk7Ci0gICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsK
KyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpT
T2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXls
b2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCwgRmluYWxPYmplY3RNb2Rl
ID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2Fk
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAgICAgIC8vIEFyaXRobWV0aWMg
b3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRkMzJDb25zdGFudCh1bnNpZ25lZCBk
c3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CkBA
IC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBp
bGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqKTsKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElk
ZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBi
b29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVj
dE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVk
T2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKLSAgICAgICAgdm9p
ZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1
ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmpl
Y3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
OworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCwg
RmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNp
b24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFk
ZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKICAgICAv
LyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIKLSAgICBp
ZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBzdG9yYWdlUHRyKTsKLSAgICAgICAg
c3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAgICAgICBzdG9yZVB0cihUcnVzdGVk
SW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3Rv
cmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQs
IENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChU
IHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAvLyBWZXJpZnkgc3RydWN0dXJlLgot
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMCk7CisgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBzdHJ1Y3R1cmUpKSwgcmVnVDEp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSks
IHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2Jh
bFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAgIGxvYWQzMihCYXNlSW5kZXgocmVn
VDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
cGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1Qy
LCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRh
ZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJl
Z1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5
dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVOR1RIKG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2dsb2JhbCkpLCBkc3QsIHJlZ1Qx
LCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJ
KHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBMb2FkIGNhY2hlZCBwcm9wZXJ0eQog
ICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFsd2F5cyB1c2VzIGV4dGVybmFs
IHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNH
bG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1QwKTsKICAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwg
cmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgU2NhbGVQdHIpLCBy
ZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHJlZ1QxLCBy
ZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9p
ZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBh
IGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJl
bnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2Rl
KSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJ
RCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+
dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hl
Y2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgCiAgICAg
Y3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAg
ICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkK
ICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3Ry
dWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7CisgICAgQ29udmVydGlibGVMb2Fk
TGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMik7CiAgICAg
RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBsb2FkUHRyV2l0aENvbXBhY3RB
ZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNl
dCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50
TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVn
VDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7IC8vIHRhZwogICAgIApAQCAt
MzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoKQogICAgIAog
ICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwog
Ci0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhv
dFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2Vt
ZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
byhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRp
c3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMzk5LDcg
KzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsKICAgICAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBj
b252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZM
aW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVs
MSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMiwgQWRkcmVzcyhyZWdUMSwg
cGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2FkCiAgICAgRGF0YUxhYmVsMzIg
ZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1Qz
LCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHRhZwogICAg
IApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVj
dGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyLCByZWdUMSwgcmVnVDIs
IFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsK
IAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1
YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBo
b3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNw
bGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9i
eXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5
U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyKSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQz
MCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QK
IH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBh
eWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9m
ZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFs
dWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNl
dCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBlbWl0U3RvcmUob2Zmc2V0LCB2
YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQo
Y2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0Ojpv
ZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIGVtaXRTdG9yZShpbmRleFJl
bGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGJhc2Up
OwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3Jh
Z2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3Vs
dFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVj
dE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklE
IHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQg
b2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZz
ZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2FjaGVkT2Zmc2V0
KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQYXlsb2FkOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHRl
bXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1w
KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5l
U3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNo
ZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOwogfQogCi12b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3Zv
aWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklE
IHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNl
dCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZDMyKEFkZHJl
c3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsK
KyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSksIHJlc3Vs
dFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIGxv
YWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxv
YWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHRUYWcpOworICAg
IGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hl
ZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQz
MihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNl
dCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNo
ZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBi
b29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcmVnVDAg
Y29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250YWlucyB0aGUgYmFzZVRhZy4g
UmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KSB8
fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9jYXRlIHByb3BlcnR5IHN0b3JhZ2Ug
aWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAgICBib29sIHdpbGxOZWVkU3RvcmFn
ZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3
U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGJvb2wgd2lsbE5lZWRT
dG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKHdpbGxOZWVkU3RvcmFnZVJl
YWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5lIHdhcyBjYWxsZWQgdG8gbGlrZSBh
IEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFnYWluIHdlIG5lZWQgdG8KICAgICAg
ICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRoZSBzdGFjaywgdG8gcHJldmVu
dCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVkLgpAQCAtNDk5LDcgKzUxMSw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1YkNh
bGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50
KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyB2YWx1ZQot
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpKTsKICAgICAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAg
ICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3ICs1NjUsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cGF0Y2hHZXRCeUlk
U2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwog
ICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29k
ZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBKSVRTdHViczo6Y3RpX29w
X2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5n
IHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0
dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKICAg
ICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAg
ICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJv
bSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1
cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlz
cGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0ICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAgICByZXBhdGNoQnVmZmVy
LnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVy
dGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5
U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0
QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVs
MSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBh
Y3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFi
ZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQogCi12b2lkIEpJ
VDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklU
OjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNo
ZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7
CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01
NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sq
CiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0
IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9u
UHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0
X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUp
ICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9w
b2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sg
Zm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1
cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJl
cGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5w
dXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkp
OworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVu
dExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAor
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExh
YmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKIH0KIAogdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlv
bihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwp
KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03MDAsNyArNzEwLDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgogfQogCiAKLXZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3Zv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEp1bXAg
ZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKQEAgLTc2MCw3
ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHVi
Um91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zm
c2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBo
b2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4MzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3Rv
dHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTc1LDEz
ICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5j
dGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRh
ZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCkKK3ZvaWQgSklU
Ojpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQsIEZpbmFs
T2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVl
KSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNl
LCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9m
ZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
LCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1vZGUgPT0gTWF5QmVGaW5hbCkgewor
ICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3Rl
ZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAg
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJh
c2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhh
bk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOwor
ICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7Cisj
ZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAgICBsb2FkMzIoQmFzZUluZGV4KGJh
c2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBU
aW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAtIGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRUYWcpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAg
IHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3RzKSkpKTsKKyAgICBhZGQzMihB
ZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9v
ZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCBy
ZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEs
IHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEwICsxNTEs
MjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQs
IFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdp
c3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgp
KSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2Fs
ZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKKyAg
ICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmluYWwpIHsKKyAgICAgICAgSnVt
cCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgICAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmsodGhpcyk7CisgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UsIHNjcmF0
Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhh
bk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOwor
ICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7Cisj
ZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0KKyAgICBsb2FkUHRyKEJhc2VJbmRl
eChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Bu
YW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yODMsNyArMjk5LDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRf
b3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
Ly8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4K
LSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlv
biArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRf
YnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudElu
c3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09
IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3Vy
cmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNv
ZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAKICAgICBjdXJyZW50SW5zdHJ1Y3Rp
b24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwogICAgIHVuc2lnbmVkIHJlc3Vs
dFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMzczLDE0ICszOTAs
MTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZQogICAgIFBhdGNo
YWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hH
ZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVj
ayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERhdGFMYWJlbENvbXBh
Y3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0
Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsKIAog
ICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVF
TkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBp
bGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1
YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21w
YXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3VsdCkpOworICAg
IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBp
bGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRo
QmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFn
ZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0ICs0NTcsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJlbFB0
ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBhdGNo
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBh
dGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAgICBD
b252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlZ1QyKTsKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCA9IHN0b3JlUHRyV2l0
aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgcGF0Y2hQdXRCeUlkRGVm
YXVsdE9mZnNldCkpOwogCiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQ
dXRCeUlkKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
KTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwpKTsK
KyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJD
b21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90
UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3Bs
YWNlbWVudExhYmVsKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3Mg
cHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAvLyB2YWx1ZSBpbiBvYmplY3RS
ZWcuCi12b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICog
c2l6ZW9mKEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRy
ZXNzKGJhc2UsIG9mZnNldCkpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQp
KSB7CisgICAgICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3Rv
cmFnZShjYWNoZWRPZmZzZXQpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIGJhc2UpOworICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIHNpemVvZihKU1Zh
bHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CiB9CiAKIC8v
IENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBv
dmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNh
Y2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHQpOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldCksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldElu
SW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0
KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2Jq
ZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQg
SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJl
c3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+
YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlc3VsdCwgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCBy
ZXN1bHQpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAg
IGxvYWRQdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NP
Zk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9u
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKIHsKICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgLy8gQ2hlY2sgZWF4IGlz
IGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAtNTIyLDcgKzU1Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAgIAogICAg
IC8vIGVtaXQgYSBjYWxsIG9ubHkgaWYgc3RvcmFnZSByZWFsbG9jIGlzIG5lZWRlZAotICAgIGJv
b2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7Cisg
ICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAo
d2lsbE5lZWRTdG9yYWdlUmVhbGxvYykgewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xpbmUgd2Fz
IGNhbGxlZCB0byBsaWtlIGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwgYWdhaW4g
d2UgbmVlZCB0bwogICAgICAgICAvLyByZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZyb20gdGhl
IHN0YWNrLCB0byBwcmV2ZW50IHRoZSBzdGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWduZWQuCkBA
IC01MzIsNyArNTYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
bwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAgICBzdHVi
Q2FsbC5za2lwQXJndW1lbnQoKTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3Vt
ZW50KCk7IC8vIHZhbHVlCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0z
MihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSkpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5l
d1N0cnVjdHVyZSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKICAgICAgICAgZW1p
dEdldEpJVFN0dWJBcmcoMiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYwMiw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0Nh
bGxlclRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5m
by0+c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxm
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAg
LTU4MCwxNCArNjEwLDEzIEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayog
Y28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gY3RpX29wX2dldF9ieV9pZF9mYWlsLCBi
dXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rp
b25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAotICAgIGludCBvZmZzZXQgPSBz
aXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0
IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1
Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNl
dCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5m
by0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogCkBAIC01OTUsMTEgKzYyNCwxMCBAQCB2b2lkIEpJVDo6cGF0Y2hQ
dXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0
aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVz
dGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9u
KHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGly
ZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIAotICAgIGludCBvZmZz
ZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUg
b2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRo
ZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZz
ZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNh
Y2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0
aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0
LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hl
ZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3ICs2NzEsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9v
cF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0
ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5j
aW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBl
IG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVh
cmx5ISkKQEAgLTcxMCw3ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQog
Ci12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGlj
U3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNo
ZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBv
bHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFBy
b3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hl
Y2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0g
ZmFsc2U7CkBAIC03NzAsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxv
Y2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50
SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1
YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlz
CiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxh
dGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04MzksNyArODY3LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29k
ZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNv
dW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcgKzk0Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVy
LnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUo
KSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4q
IGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NCw3ICs5NTQsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVf
dCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBz
bG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KSB7
CiAgICAgICAgIHN0dWJJbmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9nZW5lcmlj
OwpAQCAtMTQ4NiwxMyArMTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCos
IG9wX3B1dF9iCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpOwogICAgIGludDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigp
OwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gc3RhY2tGcmFtZS5hcmdzWzRdLnN0cnVj
dHVyZSgpOwotICAgIGludDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKTsKKyAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCk7CisgICAgCisgICAgQVNTRVJUKG9sZFNpemUgPj0gMCk7CisgICAgQVNT
RVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3Qo
KSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgUHJvcGVy
dHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIG9sZFNpemUsIG5ld1NpemUpOwotICAgIGJhc2UtPnNldFByb3BlcnR5U3RvcmFnZShnbG9i
YWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBu
ZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgb2xkU2l6
ZSwgbmV3U2l6ZSk7CisgICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBu
ZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC0xODE0
LDcgKzE4MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAg
ICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogc2xv
dEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwogICAgIAotICAgIHNpemVf
dCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJh
c2VWYWx1ZSkKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywg
U1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19m
YWlsKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYg
IXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERh
dGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApA
QCAtOTQwLDcgKzk0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQKICAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1By
b3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
ICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ug
c29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyArOTU4LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOwotICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdl
KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1
Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKQEAg
LTk2MCwxNiArOTY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQKICAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBp
ZiAocGNbOF0udS5vcGVyYW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9w
ZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zm
c2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0g
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMTg2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5LDI0IEBAIF9sbGludF9vcF9pc19z
dHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFn
LCBwYXlsb2FkKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwg
SW5saW5lU3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0
T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxv
YWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFn
ZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAq
IElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwg
OF0sIHBheWxvYWQKK2VuZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHBy
b3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYmlsdCBw
cm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RB
bmRTdG9yYWdlCisgICAgam1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9i
amVjdDo6bV9pbmxpbmVTdG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0
QW5kU3RvcmFnZQorLnJlYWR5OgorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RB
bmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCiBtYWNybyByZXNv
bHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAg
ICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtOTMwLDkgKzk0OCw3IEBA
IG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CiAgICAgbG9hZGkgMTZb
UENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0g
ICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5v
dEZpbmFsKHQxLCB0MCwgdDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMTAzLDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdl
IG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRv
IG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUg
Y2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBp
cyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRp
bnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRh
a2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBh
bnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQotICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFu
ZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENd
LCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwg
dDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2Fk
aSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2Fk
aSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2go
OSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAg
ICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAg
IGxvYWRpIDRbUENdLCB0MQorICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3Rv
cmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgICAgICAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVBy
b2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAg
ZW5kKQorCisgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKLS5vcEdldEJ5
SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAg
ICBkaXNwYXRjaCg5KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdl
dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNf
bGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1OSw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8g
cHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
IDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0
MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
LSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIs
IHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zm
c2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRp
c3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAg
dDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAg
ICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAg
ICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRj
aCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3Rv
cmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlT
dG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAor
CitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAK
IC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9i
eV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0
aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5
SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRk
aXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAg
ICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
LCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlk
U2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQx
Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRw
IHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAg
d3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBs
b2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0
b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdl
dFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNy
byAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVy
dHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIs
IHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAg
ICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3Jl
cCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisg
ICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJl
LCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVy
ZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNp
bmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAy
OFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNo
CisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFn
LCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUs
IFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5l
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxU
YWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3Ms
IHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hl
Y2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRo
ZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAg
ICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAg
ICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0g
ICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAg
ICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90
b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwg
b2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
c2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5s
b29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24o
c3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5z
aXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9s
bGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzE4LDggQEAgX2xsaW50X29wX2dldF9i
eV9wbmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAg
IGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3Qz
XSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC03NzgsNiArNzc4LDIyIEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2go
MykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChw
cm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCisgICAgYXNzZXJ0KG1hY3Jv
IChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVu
ZCkKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3Jh
Z2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKK21h
Y3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVjdEFu
ZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VD
YXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFn
ZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5p
c0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2Fk
cCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9m
ZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQog
ICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBEZXN0
aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArODA1LDcgQEAgbWFjcm8gcmVzb2x2ZUds
b2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQog
ICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQQywg
OF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAg
ICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAgdDIs
IFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQwCkBA
IC05MzcsNyArOTUyLDcgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRp
c3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0UHJv
cGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9u
b21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkg
dGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRv
IGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NjMsMzAgQEAgX2xs
aW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlz
IDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQyXSwg
dDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywgOF0s
IHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFBy
b3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAo
cHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2Ny
YXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAgICAg
ICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3Jh
dGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAgICAg
ICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29w
X2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCi0ub3BHZXRCeUlk
U2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAg
ZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBnZXRC
eUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKQEAgLTk3OCw2NSArMTAwNSw5MyBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0
QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRp
cyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
cyAyNFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRC
eUlkU2xvdwotICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQwKQotICAgIHdyaXRlQmFycmllcih0MCkKLSAgICBzdG9yZXAgdDAsIFt0
MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAg
IHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRj
aCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKKyAgICAgICAgICAgIHdyaXRl
QmFycmllcih0MCkKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdl
LCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxp
bnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1
dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkK
ICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxD
aGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0
aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25h
bENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBs
b2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1
dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpcyA0MFtQ
QiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0s
IHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkK
LSAgICB3cml0ZUJhcnJpZXIodDEpCi0gICAgc3RvcmVwIHQxLCBbdDNdCi0gICAgbG9hZHAgNDhb
UEIsIFBDLCA4XSwgdDEKLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0g
ICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAg
ICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAg
ICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQorICAg
ICAgICAgICAgc3RvcmVwIHQxLCBbdDNdCisgICAgICAgICAgICBsb2FkcCA0OFtQQiwgUEMsIDhd
LCB0MQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAg
ICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRp
b25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJl
Q2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9
IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3Ig
dGhlIHByb3RvCisgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAorICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFp
bjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0
cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKKy5sb29wOgorICAgIGxvYWRwIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1
cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDgsIHNjcmF0Y2gKKyAgICBi
cG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxv
b3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xv
dykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElu
bGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9v
dXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdp
dGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1
cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1
Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90
bwotICAgICAgICAgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAotICAgICAgICAgICAg
YXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9h
ZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBi
cGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9u
ZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xk
U3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgOCwgc2NyYXRjaAot
ICAgICAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBW
YWx1ZU51bGwsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJ
ZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisK
K19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAg
cHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9y
YWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEwNiw4ICsxMTYxLDggQEAgX2xs
aW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
LCB0MwogICAgIHN1YmkgMSwgdDMKICAgICBiaWFlcSB0MywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9udW1DYWNoZWFibGVTbG90c1t0MV0sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQzLCA4
XSwgdDAKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0MV0s
IHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQwKQogICAgIGxv
YWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBk
aXNwYXRjaCg3KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw2ICs4NCwxMyBAQCBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRh
CiAjIFN0cmluZyBmbGFncy4KIGNvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAogCisjIFBy
b3BlcnR5IHN0b3JhZ2UgY29uc3RhbnRzCitpZiBKU1ZBTFVFNjQKKyAgICBjb25zdCBJbmxpbmVT
dG9yYWdlQ2FwYWNpdHkgPSA0CitlbHNlCisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5
ID0gNgorZW5kCisKICMgQWxsb2NhdGlvbiBjb25zdGFudHMKIGlmIEpTVkFMVUU2NAogICAgIGNv
bnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKQEAgLTMxMiw4ICszMTksNyBAQCBt
YWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgIHN0b3JlcCBz
Y3JhdGNoMiwgW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0
cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJ
RFtyZXN1bHRdCi0gICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gx
Ci0gICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jl
c3VsdF0KKyAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVz
dWx0XQogICAgIGVuZAogZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEgQEAgX2xsaW50X29wX3Jlc29s
dmVfd2l0aF90aGlzOgogICAgIGRpc3BhdGNoKDUpCiAKIAorbWFjcm8gd2l0aElubGluZVN0b3Jh
Z2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICAjIEluZGljYXRl
IHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCisg
ICAgIyBwcm9wZXJ0eSBzdG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICBjb250aW51YXRp
b24ob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFjcm8gd2l0aE91dE9mTGluZVN0
b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5U3RvcmFnZQorICAg
ICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVyIG5vdyBwb2ludHMg
dG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgb2JqZWN0IHJlZ2lz
dGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRlciBpcyBub3QgbmVl
ZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFnZSwgb2JqZWN0KQor
ZW5kCisKKwogX2xsaW50X29wX2RlbF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5X2lkKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUs
NyArNTU1LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhh
bmRsZVg4NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5k
IG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJh
ZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBl
bHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQog
ICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAg
ICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAg
ICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3Vm
Zml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5k
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkg
PT0gb3BlcmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4
KGtpbmQpfSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTIxODY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKLSAgICAgICAgc2l6
ZV90IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0
aW9uTmFtZU9mZnNldDsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJP
YmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0
ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIHNp
emVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9m
ZnNldDsgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51
bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0
cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Mywy
NCArOTMsNTQgQEAgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAg
IGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCisgICAgCisgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgUHJvcGVydHlTdG9y
YWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0
b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0
dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCk7CisgICAgICAgIC8v
IFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0
aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgor
ICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBw
ZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9y
YWdlU2l6ZSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+
KHRlbXApOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3Jh
Z2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOworICAgIH0KKworICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9pbmhlcml0b3JJRCk7CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1h
cmtWaW9sYXRpb247CisjZW5kaWYKK30KKwordm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGaW5hbE9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0g
dmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9y
Lm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAg
ICAKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAg
ICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgp
OwotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXpl
KTsKLSAgICBlbHNlIHsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3Qt
Pm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qg
c3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktu
b3duRmluYWxPYmplY3QoKTsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVy
ZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZl
cmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdl
OwotICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgdmlz
aXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFn
ZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CiAgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5U3Rv
cmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIHRo
aXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6
OlVuY2hlY2tlZCk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQp
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAor
ICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVT
aXplRm9yS25vd25GaW5hbE9iamVjdCgpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPmlubGluZVN0b3JhZ2UoKSwgc3RvcmFnZVNpemUpOworCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3
YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogI2VuZGlmCkBAIC0xNTMsOCArMTgz
LDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAo
SlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkg
ewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmlj
VmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAg
ICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAyLDcgQEAgYm9vbCBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsK
ICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoaXNWYWxpZE9mZnNldCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBEb250RGVsZXRlICYmICFleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93blByb3Bl
cnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
bW92ZURpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CkBAIC0zOTQsNyAr
NDI0LDcgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlYwogYm9vbCBK
U09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKIHsKICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBX
VEY6Om5vdEZvdW5kKQorICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUp
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rp
b24gd2l0aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC01MTYsMjAg
KzU0NiwyMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAKIGJv
b2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3Qgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkp
IHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCA9
PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zm
c2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVj
dHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zm
c2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zm
c2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5LDIyIEBAIFN0cnVjdHVyZSog
SlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEoKICAgICByZXR1cm4gbV9pbmhlcml0b3JJRC5n
ZXQoKTsKIH0KIAotUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93UHJvcGVydHlTdG9yYWdl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXpl
KQorUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAg
ICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhh
dCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVyZSgpLCBzaW5jZQogICAgIC8vIHdl
IG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9uLgogCi0gICAgUHJvcGVydHlT
dG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOworICAg
IFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX291dE9mTGluZVN0b3JhZ2Uu
Z2V0KCk7CiAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CiAKLSAg
ICBpZiAoaXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgIGlmICghb2xkUHJvcGVydHlTdG9y
YWdlKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2Ug
R0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUt
cHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gbmV3UHJvcGVydHlTdG9yYWdl
OwogICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9m
KFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pICogbmV3U2l6ZSwgJnRlbXApKQogICAgICAgICAg
ICAgQ1JBU0goKTsKICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJv
cGVydHlTdG9yYWdlPih0ZW1wKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
b2xkU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJv
cGVydHlTdG9yYWdlW2ldOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBl
eHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhv
c2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0
ZW1wID0gb2xkUHJvcGVydHlTdG9yYWdlOwpAQCAtNTk0LDggKzYyMSw4IEBAIGJvb2wgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
ID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBvYmplY3Qt
PnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIGNlbGwpOwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOworICAgIGlmIChvZmZzZXQg
PT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihvYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVz
KTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBp
cyBhIGdldHRlci9zZXR0ZXIKICAgICB9OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZp
bmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNgotI2Vsc2UKLSNkZWZpbmUg
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAotI2VuZGlmCi0KLUNPTVBJTEVf
QVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSAwKSwgZmluYWxf
c3RvcmFnZV9ub25fbmVnYXRpdmUpOworICAgIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKICAgICBj
bGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0
Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2Jq
ZWN0OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKIApAQCAtMTY5LDI2ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3Rf
aW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRo
ZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewot
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3Vu
ZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOworICAgICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwot
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgICAg
IHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCkt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rp
b24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRp
b25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zm
c2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0
CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCk7IH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ug
aW5saW5lU3RvcmFnZVVuc2FmZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAg
fQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbiAtIHByb3BlcnR5U3RvcmFnZSgpOworICAg
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsK
KyAgICAgICAgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7
CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9Cisg
ICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5s
aW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb25zdFBy
b3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkxp
bmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9y
YWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisKKyAgICAgICAgY29u
c3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtv
ZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9m
TGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAg
IH0KKworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFn
ZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAm
b3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvckxvY2F0aW9uKFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAg
ICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNldEluSW5s
aW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBs
b2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAg
ICAgICAgICAgdmFsaWRhdGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAg
IHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkg
KzI0Niw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBr
bm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdl
dCgpOyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtv
ZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRV
bmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgp
W29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5nZXQoKTsgfQorICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkg
eyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUp
OyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9
CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FT
U0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rp
b25zUmVpZmllZCgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVk
KCk7IH0KICAgICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3Rh
dGUqIGV4ZWMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBn
cm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSk7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJv
cGVydHlTdG9yYWdlLmdldCgpCi0gICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCo+KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyArIDEpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgc2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBy
b3BlcnR5U3RvcmFnZSBncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qg
b2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3Jh
Z2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgcmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEm
LCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3Ry
dWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNp
Z25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2
b2lkKiBhZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxp
bmVTdG9yYWdlOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9i
amVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qg
b2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlz
KSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmlzT2JqZWN0KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmpl
Y3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8g
Y3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJl
bG93LgotICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkK
ICAgICAgICAgewpAQCAtMzA1LDE5ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBp
c1N0cmluZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVy
dHlTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAg
ICAgICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpOyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9
Ci0KLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQo
c2l6ZV90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0
b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4K
ICAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwog
CkBAIC0zMjcsNyArMzQ3LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUlu
aGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJv
cGVydHlTdG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsK
IApAQCAtMzUzLDE0ICszNzMsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcgogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAg
ICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAg
IDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFs
U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAg
ICAgICAgfQogICAgIH07CkBAIC0zODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4
OCwxMSArNDEwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAg
ICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAg
ICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAg
ICAgICAgICAgIEFTU0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGlu
ZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5z
dHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJl
KCktPmlubGluZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAg
ICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBp
bmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsK
ICAgICAgICAgfQogCkBAIC00MDAsMTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5h
bE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpT
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAg
ICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07Cisg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9T
VE9SQUdFX0NBUEFDSVRZXTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5h
bE9iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBA
IC00MzEsOSArNDU2LDkgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dAogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9y
YWdlKTsKIH0KIAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKQoraW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkK
IHsKLSAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFn
ZSk7CisgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9y
YWdlKTsKIH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgp
CkBAIC00NzEsMTQgKzQ5NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlz
KCkgY29uCiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9i
YWxUaGlzVHlwZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFn
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9y
YWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2Uo
KQotICAgICAgICAgICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAm
JiBzdGF0aWNfY2FzdDx2b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMg
KyAxKSkpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxp
bmVTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXpl
KCkpOworICAgIH0KICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAg
ICBtX3Byb3BlcnR5U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAg
bV9vdXRPZkxpbmVTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAog
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCog
YXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxs
KCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdl
KQoraW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkK
LSAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2Up
CisgICAgLCBtX291dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApA
QCAtNTQyLDE5ICs1NzEsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9y
SUQoCiAgICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxp
bmUgc2l6ZV90IFN0cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAg
ICBpZiAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0
dXJuIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwot
fQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMo
Y29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+
aXNTdWJDbGFzc09mKGluZm8pOwpAQCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTQ2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6
ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkK
IHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7
Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAg
ICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgbmFtZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAg
ICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmpl
Y3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwq
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwg
YW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZh
bHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVu
dFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmlj
RnVuY3Rpb24pKQpAQCAtNzAwLDEzICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlz
RXh0ZW5zaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVy
dHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBv
dXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dP
dXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGlu
ZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0
cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0g
ICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1
cmUoKSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFn
ZSwgc3RydWN0dXJlKCkpOwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNl
dCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsK
ICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAg
ICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93LgogICAgICAg
ICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC03MTQsMTUgKzczMSwxNiBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0
cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldDsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkp
IHsKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2Uo
KTsgCi0gICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0
b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpOwotCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdl
IG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7IAorICAgICAgICBpZiAoY3VycmVudENh
cGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNp
dHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisKKyAgICAgICAgdmFsaWRhdGVP
ZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChv
ZmZzZXQpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zm
c2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRp
b25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAg
ICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0
LDcgKzc1Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAg
ICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwot
ICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVu
dEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzY4LDcgKzc4Niw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0
IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBB
U1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xv
YmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAg
ICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jv
d091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBz
ZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0
dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRh
UHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0
MywxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAm
JiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9y
YWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jv
d1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3Rv
cmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFs
dWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3Ry
dWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3Rv
cmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3Rl
ZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Cisg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUo
KSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQog
CkBAIC05MDYsOCArOTI1LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVj
U3RhdAogICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1Zh
bHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5F
IEpTT2JqZWN0KiBSZWdpc3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1
ZSgpKQpAQCAtOTIyLDYgKzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVy
Ojp3aXRoQ2FsCiAgICAgcmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBh
dGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisv
LyB0aGUgYmFzZSBpczoKKy8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBv
dXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czog
dGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
aWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklu
bGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNl
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zm
c2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOwor
ICAgIEFTU0VSVCghKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShv
ZmZzZXQpOworfQorCitpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAg
ICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMTAgKzU2LDEwIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQK
ICAgICBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJl
KCktPmhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxl
U2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2Fj
aGVhYmxlU2xvdHMpOwotICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBp
ZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90
KQotICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpl
eGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFy
cmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNo
Q3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVy
biBpdGVyYXRvcjsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAgICAgICAgCkBAIC02MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
Ci0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAg
Ym9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChpID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAg
IG9mZnNldCA9IGkgKyBtX29mZnNldEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCkBAIC04OCwxMiArODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRh
KiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFy
cmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0
eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBt
X2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5n
KGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1f
b2Zmc2V0QmFzZSA9IG9iamVjdC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlw
ZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1
aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
QmFzZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0
cmluZ3M7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFz
T2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAg
ICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5z
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAg
aWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
cyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTIxODY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBq
c0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
c2l6ZV90JiBzbG90T2Zmc2V0KQorICAgIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgc2xvdE9m
ZnNldCkKICAgICB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGJhc2UuYXNDZWxsKCk7CiAgICAg
ICAgIHNpemVfdCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJzCiAgICAgcmV0dXJuIGNwdXNU
b1VzZTsKIH0KIAotCiBPcHRpb25zOjpFbnRyeSBPcHRpb25zOjpzX29wdGlvbnNbT3B0aW9uczo6
bnVtYmVyT2ZPcHRpb25zXTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhl
IG9wdGlvbnM6CkBAIC0xMTksMTEgKzExOCwxMSBAQCBjb25zdCBPcHRpb25zOjpFbnRyeUluZm8g
T3B0aW9uczo6c19vcHRpCiB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogewogICAgIC8vIElu
aXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgot
I2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfKSBcCisj
ZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8pICAgIFwK
ICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsKICAgICBKU0NfT1BUSU9OUyhGT1JfRUFDSF9P
UFRJT04pCiAjdW5kZWYgRk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAgICAgCiAgICAgLy8gQWxsb3cg
ZW52aXJvbm1lbnQgdmFycyB0byBvdmVycmlkZSBvcHRpb25zIGlmIGFwcGxpY2FibGUuCiAgICAg
Ly8gVGhlIGV2biB2YXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBvcHRpb24gcHJlZml4ZWQg
d2l0aAogICAgIC8vICJKU0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIgQEAgdm9pZCBPcHRpb25zOjpp
bml0aWFsaXplKCkKICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgIkpT
Q18iICNuYW1lXyk7CiAgICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZP
Ul9FQUNIX09QVElPTgotICAgIAogI2VuZGlmIC8vIFJVTl9USU1FX0hFVVJJU1RJQ1MKIAorI2lm
IDAKKyAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgor
I2VuZGlmCisgICAgCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFr
ZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVw
KCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhy
ZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxMjE4Njgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFByb3BlcnR5TWFwSGFz
aFRhYmxlX2gKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCisjaW5jbHVkZSAiUHJv
cGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAtNzIsMTEgKzczLDExIEBAIGlu
bGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQgdikKIAogc3RydWN0IFByb3BlcnR5
TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKLSAgICB1bnNpZ25lZCBvZmZzZXQ7Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
V3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50
cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBr
ZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKQorICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShr
ZXkpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCkBAIC0xNzQsOCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIHRvIG1haW50
YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KICAg
ICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQo
KTsKLSAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVk
T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9m
ZnNldCgpOworICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CisgICAg
CisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChKU1R5cGUpOwogCiAgICAgLy8gQ29weSB0
aGlzIFByb3BlcnR5VGFibGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2Fw
YWNpdHkgcHJvdmlkZWQuCiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xv
YmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3
ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVk
IG1fa2V5Q291bnQ7CiAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBW
ZWN0b3I8dW5zaWduZWQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4gPiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
RW1wdHlFbnRyeUluZGV4ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlU
YWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zm
c2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5
T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0
KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNl
dHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykp
OworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFi
bGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsy
OTEsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQog
CiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVu
c2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0
KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90
aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMp
Ci0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVk
Pigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRv
cHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsK
IH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCAr
NDcyLDMxIEBAIGlubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICBy
ZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwog
fQogCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitp
bmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7
Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2Rl
bGV0ZWRPZmZzZXRzLT5yZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5s
aW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQp
CitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1f
ZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAg
ICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlm
IChoYXNEZWxldGVkT2Zmc2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7
CisgICAgCisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4g
c2l6ZSgpOworICAgIAorICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsK
K30KKwogaW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29w
eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0Nh
cGFjaXR5KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5
OSw3ICs1MTMsNyBAQCBpbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7
CiAgICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7
CiAgICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVk
T2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQg
Kz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRf
aAorCisjaW5jbHVkZSAiSlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElO
RV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNlbHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFD
SVRZIDQKKyNlbmRpZgorCit0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNv
bnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9w
ZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lU
WTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlu
bGluZVN0b3JhZ2VDYXBhY2l0eTsKKworLy8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBi
ZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tP
ZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlP
ZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsK
K2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wg
aXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVP
ZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3Jh
Z2UoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2UoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9y
YWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90
c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7Citp
bmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUpOworCitp
bmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsK
K30KKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5
cGUgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0o
dHlwZSk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQo
b2Zmc2V0ID09IGludmFsaWRPZmZzZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVj
dFR5cGUKKyAgICAgICAgICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lu
bGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBj
aGVja09mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwor
fQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpT
VHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJU
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAg
cmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGlu
ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0
KTsKKyAgICByZXR1cm4gb2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxp
bmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7
Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lu
bGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6
ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7Cisg
ICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQo
b2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQor
CitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1
cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZM
aW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVj
a09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9m
ZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICBy
ZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxh
c3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0
eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBl
ICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxp
bmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9m
ZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAgIHJldHVybiBu
ZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAg
Ym9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5
cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNl
dDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFs
dWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShK
U1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2
b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAg
ICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJG
dW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpT
VmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisg
ICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09i
amVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VU
VEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBi
dWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAg
ICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBj
bGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUg
dGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBtX29mZnNldCA9
IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2Fj
aGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwog
Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNs
b3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBz
ZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAg
ICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0
eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9m
ZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3Qq
IGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmpl
Y3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAg
bV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQs
NyArNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBzaXpl
X3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQoKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzcz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7
CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUo
Z2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZv
KQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQot
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkg
PyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNl
dChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2lu
ZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERh
dGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1f
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwg
bV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAg
ICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMo
ZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMt
PnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJ
bmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5n
KQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxp
bmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rp
b25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFi
bGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAg
ICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29w
eShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVt
YmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBT
dHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9w
cm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOwor
ICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1
Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0
cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBu
ZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAg
ICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBj
dXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQog
ewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0
eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQor
c2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkK
IHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1f
b3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURp
Y3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQor
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVl
SW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYm
IHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0g
bm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1f
b2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgb2Zmc2V0ID0g
ZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJh
bnNpdGlvbjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHdlIG1h
eSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFkeSBhIHRy
YW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1dGVzLCBi
dXQKQEAgLTMyNyw4ICszMjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0
U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljVmFsdWUpOwotICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
ID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHRy
YW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICBpZiAodHJh
bnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkKKyAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAg
ICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAgICAgCkBAIC0zNTMsMTUgKzM1MywxNSBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgfQogCiAgICAg
b2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmICh0cmFuc2l0aW9uLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKQotICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
KyAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5
KCk7CiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUt
Pm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICByZXR1
cm4gdHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3Vu
dCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFs
dWVzKHByb3BlcnR5Q291bnQpOwotCisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0
Rm9yKG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3Ig
ZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxl
OjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyLCArK2kpIHsKICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0
T2Zmc2V0KGl0ZXItPm9mZnNldCk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFi
bGUgdG8gaGF2ZSB0aGUgbmV3IHByb3BlcnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9m
ZnNldCA9IGk7CisgICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5
IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXRE
aXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ld
KTsKIAogICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAg
ICB9CkBAIC01NjgsNyArNTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0
aW9uYXJ5UwogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VS
VCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAg
c2l6ZV90IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6
ZSgpID4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgZ3Jvd1Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNW
YWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUp
OworICAgIGlmIChvdXRPZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAg
ICBncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXpl
X3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hl
KTsKQEAgLTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdp
dGhvdXRUCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhn
bG9iYWxEYXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJv
cGVydHlOYW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVy
dHlOYW1lKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBA
QCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBh
ZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBv
d25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBu
b09mZnNldCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5
VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlU
YWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV90eXBlSW5mby50eXBlKCkpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkK
IHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAg
ICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlm
ICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAg
ICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9
IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlm
ICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4g
aW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAg
ICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSAr
Njg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAg
ICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1
dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQ
cm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNl
dChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBA
IHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVk
IG5ld09mZnNldDsKLQotICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQo
KSkKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0
KCk7Ci0gICAgZWxzZQotICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUo
KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRP
ZmZzZXQobV90eXBlSW5mby50eXBlKCkpOwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJv
cGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSkpOwogCkBAIC03MTEsNyArNzA2LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3MTksNyBAQCBzaXplX3QgU3Ry
dWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByCiAgICAgaWYgKCFwb3NpdGlvbi5maXJzdCkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9u
LmZpcnN0LT5vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmly
c3QtPm9mZnNldDsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAg
ICBtX3Byb3BlcnR5VGFibGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtODcsOSArODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAzLDMyICsxMDMsMzIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAg
ICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVu
c2lvbnM7IH0KICAgICAgICAgYm9vbCBkaWRUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
aWRUcmFuc2l0aW9uOyB9Ci0gICAgICAgIGJvb2wgcHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
KQorICAgICAgICBib29sIHB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5
U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+
PSBvdXRPZkxpbmVTaXplKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fcHJv
cGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90
c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChvdXRPZkxp
bmVDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudFNpemUgPT0gb3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9w
cm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJU
KHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkpOwogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9m
ZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRh
YmxlLT5zaXplKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgp
ID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxT
dG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHko
KTsKICAgICAgICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVk
TmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpOyAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IHN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAogICAgICAgICBT
dHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2Jq
ZWN0Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAg
ICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQ
cm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlw
ZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0K
ICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9k
aWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTE0OSwxOCArMTQ5LDEx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNo
YWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lE
KCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyBy
ZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNz
SW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7
CisgICAgICAgIH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0
cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKIAotICAgICAgICB2b2lkIGdyb3dQcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsg
cmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAgICAgdW5zaWduZWQgcHJv
cGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUt
PnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCAr
IDEpKTsgfQotICAgICAgICBzaXplX3QgaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3Q7Ci0g
ICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsKLQotICAgICAgICBzaXpl
X3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQo
SlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHZvaWQgZ3Jvd091
dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5
OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bkZpbmFs
T2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8u
dHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6
ZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXpl
IC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAg
ICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVj
dCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUo
KSAhPSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RP
ZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNp
emUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNs
YXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkg
eworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5ID0gdGhpcy0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90
YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVDYXBhY2l0eTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFz
dE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9y
YWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdHlwZUluZm8udHlw
ZSgpID09IEZpbmFsT2JqZWN0VHlwZTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxp
bmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNJbmxpbmVT
dG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCByZXN1bHQ7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6
ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0
ICsgMTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5s
aW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9w
cm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4g
bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsK
KyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkg
PT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlu
bGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJz
dFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGlu
ZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
cHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBt
X3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgLSAxOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgICAgICB9CisgICAg
ICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgpCisg
ICAgICAgICAgICAgICAgJiYgb2Zmc2V0IDw9IGxhc3RWYWxpZE9mZnNldCgpOworICAgICAgICB9
CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFt
ZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2Vs
bComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAg
ICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJv
dG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJs
ZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAg
ICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0K
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVT
cGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50
ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzc0LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAg
dm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBz
YW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5v
dCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQg
PyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JM
YXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3Rv
dHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICs0MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZzZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKIAogICAg
ICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAtMzM2LDEwICs0MzUsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90
cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKIAotICAgICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5OworICAgICAgICB1aW50MzJfdCBtX291dE9mTGluZUNhcGFjaXR5OwogCiAg
ICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFjY291bnQgZm9yIGFub255bW91cyBzbG90cwot
ICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0Owog
CiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgICAgICBib29sIG1f
aXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAgLTM1MywyNiArNDUyLDI2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9
OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zm
c2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsK
IAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+Zmlu
ZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRy
eS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZz
ZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJl
OjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAg
IGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGlu
dmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3Bl
cnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJzdDsKLSAgICAgICAgcmV0
dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50
cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAgICAgCiAgICAgaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="159152"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150841</attachid>
            <date>2012-07-04 13:59:18 -0700</date>
            <delta_ts>2012-07-04 14:41:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_19.diff</filename>
            <type>text/plain</type>
            <size>262976</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDYgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1wbEA0
QEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxANEBA
WgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2Jh
bFByb3BlcnR5SW5mb0AxMkBIQFoKQEAgLTE5Miw3ICsxODksNiBAQCBFWFBPUlRTCiAgICAgP2Zy
b21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASUBaCiAgICAgP2Z1bmN0
aW9uR2V0dGVyQFByb3BlcnR5U2xvdEBKU0NAQEFCRT9BVkpTVmFsdWVAMkBQQVZFeGVjU3RhdGVA
MkBAWgogICAgID9mdW5jdGlvbk5hbWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQlZVU3Ry
aW5nQDJAWFoKLSAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2JhbERhdGFAMkBW
UHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAgID9nZXRDYWxjdWxhdGVkRGlz
cGxheU5hbWVASlNDQEBZQT9BVlVTdHJpbmdAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU09iamVjdEAx
QEBaCiAgICAgP2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENhbGxUeXBlQDJAUEFWMTJA
QUFUQ2FsbERhdGFAMkBAWgogICAgID9nZXRDYWxsYWJsZU9iamVjdFNsb3dASlNDQEBZQVBBVkpT
Q2VsbEAxQFBBVjIxQEBaCkBAIC0yMTUsNyArMjExLDYgQEAgRVhQT1JUUwogICAgID9nbG9iYWxF
eGVjQEpTR2xvYmFsT2JqZWN0QEpTQ0BAUUFFUEFWRXhlY1N0YXRlQDJAWFoKICAgICA/Z2xvYmFs
T2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgogICAgID9ncm93QEhhbmRsZVNldEBKU0NAQEFB
RVhYWgotICAgID9ncm93UHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFUEFWPyRXcml0
ZUJhcnJpZXJCYXNlQFc0VW5rbm93bkBKU0NAQEAyQEFBVkpTR2xvYmFsRGF0YUAyQElJQFoKICAg
ICA/aGFzSW5zdGFuY2VASlNPYmplY3RASlNDQEBTQV9OUEFWMTJAUEFWRXhlY1N0YXRlQDJAVkpT
VmFsdWVAMkAyQFoKICAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNT
dGF0ZUAyQElAWgogICAgID9oYXNQcm9wZXJ0eUBKU09iamVjdEBKU0NAQFFCRV9OUEFWRXhlY1N0
YXRlQDJAVlByb3BlcnR5TmFtZUAyQEBaCkBAIC0zMjgsNyArMzIzLDYgQEAgRVhQT1JUUwogICAg
ID9zdG9wUHJvZmlsaW5nQFByb2ZpbGVyQEpTQ0BAUUFFP0FWPyRQYXNzUmVmUHRyQFZQcm9maWxl
QEpTQ0BAQFdURkBAUEFWRXhlY1N0YXRlQDJAQUJWVVN0cmluZ0AyQEBaCiAgICAgP3N0b3BTYW1w
bGluZ0BKU0dsb2JhbERhdGFASlNDQEBRQUVYWFoKICAgICA/c3Vic3RyaW5nU2hhcmluZ0ltcGxA
VVN0cmluZ0BKU0NAQFFCRT9BVjEyQElJQFoKLSAgICA/c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9y
YWdlU2l6ZUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFwQEpTQ0BAUUFF
UEFWSW5jcmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3RvdHlwZUBKU1Zh
bHVlQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID90aGlzT2Jq
ZWN0QERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBYWgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDk0LDYgKzEwOTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxQcm9wZXJ0eU9mZnNldC5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1l
XFByb3BlcnR5U2xvdC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rp
c2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQyNzcxMTU5Mjc1
RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBS
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZG
IC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1QTNCMjMxMDA4
RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEIx
NEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgxNEVG
OTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNhc3Nl
bWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGlzYXNzZW1ibGVy
Lmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0
dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1OTI3NUQyMDA0
Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFzZS5jcHA7IHBh
dGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNyw2ICsyMTA5LDcgQEAKIAkJCQk4
NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJCQkJNjU0MDBD
MEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywKIAkJCQk2NTQw
MEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywKKwkJCQkwRkY3
MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLywKIAkJCQk2NTYyMUU2
QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKIAkJCQk2NTYyMUU2QzA4
OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8sCiAJCQkJNjVDMDJGQkIwNjM3NDYy
QTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEsNiArMjgxNCw3IEBACiAJCQkJMEZG
NDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9m
ZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJfaW1tX1QzLCBybiwg
cnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1aW50
OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6
OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX0xE
Ul9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYklt
bWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIzLDQ2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAg
ICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9u
U3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNl
IE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPUF9BRERf
aW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFdICYgMHhGMDAwKSk7CisgICAgICAg
ICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAgcHRyWzBdIHw9IE9QX0xEUl9pbW1f
VDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4MEYwMCkgPDwgNDsKKyAgICAg
ICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
ICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCogaW5zdHJ1Y3Rp
b25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2gg
KHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAg
ICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAgICAgICAgICAgIHB0clswXSAmPSAw
eDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQUREX2ltbV9UMzsKKyAgICAgICAgICAg
IHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0OworICAgICAgICAgICAgcHRyWzFdICY9
IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0FERF9pbW1fVDM6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXpl
b2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7
IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwz
NiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJl
bDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxlTG9hZExhYmVsOgorICAgIC8vCisg
ICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRzIGEgbG9hZFB0ciBpbnN0cnVjdGlv
biB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgorICAgIC8vIHNvIHRoYXQ6CisgICAg
Ly8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIpCisgICAgLy8KKyAgICAvLyBiZWNv
bWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJbW1QdHIoaSksIGEsIGIpCisgICAg
Y2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1w
bGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgCisgICAg
cHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCgpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwoQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAgICAgICAgICAgIDogbV9sYWJlbCht
YXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4g
bV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwg
bV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVsUHRyOgogICAgIC8vCkBAIC01NjIs
NiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxl
ci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpCisgICAgewor
ICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBMYWJlbCBs
YWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIHJl
dHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0YUxvY2F0aW9u
KCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQoQ29kZUxv
Y2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlw
ZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29kZUxvY2F0aW9u
Q29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVw
bGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkpOworICAgIH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsOwogY2xhc3MgQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyOwog
Y2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xhc3MgQ29kZUxvY2F0aW9uQ29udmVy
dGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0eXBlcyBhcmUgYWxsIHByZXR0eSBt
dWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBDb2RlUHRyIChvciBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFtZSkuICBUaGVzZQpAQCAtNjIsNiAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRhdGFMYWJlbFB0
ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGRhdGFM
YWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29t
cGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KGludCBvZmZzZXQpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9uKCkKQEAgLTE0Niw2ICsxNDgsMTUg
QEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29kZUxvY2F0aW9uQ29udmVydGlibGVM
b2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CitwdWJsaWM6CisgICAgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uQ29udmVy
dGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKKyAgICAgICAgOiBDb2Rl
TG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAgICAgOiBDb2RlTG9jYXRpb25Db21t
b24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkgeyB9Cit9OworCiBpbmxpbmUgQ29k
ZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVjdGlvbkF0T2Zm
c2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7
CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0
IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChyZWludGVycHJl
dF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOwogfQogCitpbmxpbmUgQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29udmVydGlibGVM
b2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQo
b2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24gMTIx
ODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5rQnVmZmVyOjpDb2RlUmVmIExpbmtC
dWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygiICAgIENvZGUgYXQgWyVwLCAlcCk6
XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIq
PihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNpemUoKSk7CiAg
ICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2RlKCksIG1fc2l6ZSwgIiAgICAiLCBX
VEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIgICAgICAgIDxubyBkaXNhc3NlbWJs
eSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRpc2Fzc2VtYmx5
IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTIx
ODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdHlw
ZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxDb21wYWN0Owog
ICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJlbDMyOwogICAg
IHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQdHI7CisgICAg
dHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29udmVydGlibGVM
b2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgIHR5cGVkZWYgTWFj
cm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVmIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpAQCAtMTgwLDYgKzE4MSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0KE1hY3Jv
QXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9s
YWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgbG9jYXRp
b25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBD
b2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJl
c3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOworICAgIH0KKwogICAgIC8v
IFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBjYWxsLCBnaXZl
biBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgY29kZS4KICAgICB1
bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2FsbCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShy
ZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNjAwLDYgKzYwMCwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzVGVtcFJlZ2lzdGVy
LCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQorICAgIAorICAgIENv
bnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49MCAmJiBhZGRyZXNzLm9m
ZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJXaWRlOEJpdEltbWVkaWF0ZShk
ZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAgQ29udmVydGlibGVMb2FkTGFiZWwg
Y29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVydGlibGVMb2Fk
TGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAg
ICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoYWRkcmVzcy5tX3B0ciwg
ZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Zx
X21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIENv
bnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3Vs
dCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zx
X21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihCYXNlSW5kZXggYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlLCBkZXN0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1
ZmZlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiwyNCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVy
bkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQo
bGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoQ29kZUxvY2F0aW9u
Q29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZlKQorICAgIHsKKyAgICAgICAgaWYg
KGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOwor
ICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4Njgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
NTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGlu
c3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2XzY0KQorICAg
ICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAgICAgICBwdHIrKzsKKyNl
bmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2FzZSBPUF9NT1ZfR3ZFdjoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgICpw
dHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCogaW5z
dHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZfNjQpCisgICAg
ICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0cisrOworI2Vu
ZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01PVl9HdkV2Ogor
ICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAg
c3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKEV4
ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJnZXRfYnlfaWQi
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAg
ICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3NlbGYiOwog
ICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgY2FzZSBvcF9n
ZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWluOgpAQCAtMTA1
OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3JlcGxh
Y2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0
X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0
X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAgICAgICAgIHN3
aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
KSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgor
ICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAg
ICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpAQCAtMjAzOSw2
ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICAmJiBI
ZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKICAgICAg
ICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1
Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQog
ICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7
Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zm
c2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2Up
OwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2UsIFN0cnVjdHVy
ZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgsNyArODgsNyBA
QCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAgICAgIAogICAg
IHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICgh
aXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAgLTE1NiwxMiAr
MTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAg
ICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmlj
VmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3Vu
ZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKSB7CiAgICAg
ICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVlKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBub3RGb3VuZCkK
KyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
SWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAgICAg
IHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAgICAgUHJvcGVydHlP
ZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICAgICAqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmlj
VmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobXlPZmZzZXQgPT0gbm90Rm91
bmQpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChteU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3VuZDsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBHZXRCeUlkU3RhdHVzIEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVT
ZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlmIChpc1ZhbGlk
T2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lm1fc3Ry
dWN0dXJlU2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIyMywxMSArMjIz
LDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAg
ICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChyZXN1bHQubV9vZmZzZXQgPT0g
bm90Rm91bmQpOworICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0
ID09IG5vdEZvdW5kKSB7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkp
IHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Nsb3dQYXRoOwogICAgICAgICByZXN1
bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKICAgICAgICAgcmVzdWx0Lm1fY2hhaW4uY2xlYXIo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBHZXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgR2V0QnlJZFN0YXR1c19oCiAKKyNpbmNsdWRlICJQ
cm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob3RGb3VuZC5oPgogCkBAIC00NiwxMyArNDcsMTMgQEAgcHVibGljOgogCiAgICAgR2V0QnlJ
ZFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQotICAgICAgICAsIG1f
b2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAg
ewogICAgIH0KICAgICAKICAgICBHZXRCeUlkU3RhdHVzKAogICAgICAgICBTdGF0ZSBzdGF0ZSwg
Ym9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0ID0gU3Ry
dWN0dXJlU2V0KCksCi0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwgSlNWYWx1ZSBz
cGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4gY2hhaW4gPSBWZWN0
b3I8U3RydWN0dXJlKj4oKSkKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IGludmFsaWRPZmZzZXQs
IEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVjdHVyZSo+IGNo
YWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAg
ICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9jaGFpbihj
aGFpbikKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVjdHVyZVNldCYg
c3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0KICAgICBjb25z
dCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsgfSAv
LyBSZXR1cm5zIGVtcHR5IHZlY3RvciBpZiB0aGlzIGlzIGEgZGlyZWN0IGFjY2Vzcy4KICAgICBK
U1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljVmFsdWU7IH0g
Ly8gUmV0dXJucyBKU1ZhbHVlKCkgaWYgdGhlcmUgaXMgbm8gc3BlY2lmaWMgdmFsdWUuCi0gICAg
c2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKICAgICBib29s
IHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCkBA
IC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0
OwogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBtX2NoYWluOwogICAgIEpTVmFsdWUgbV9zcGVjaWZp
Y1ZhbHVlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKICAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF9iYXNl
LCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2
ZV93aXRoX3RoaXMsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNy
byhvcF9nZXRfYnlfaWQsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAorICAgICAgICBt
YWNybyhvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcg
Ki8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfc2VsZiwgOSkgLyogaGFzIHZhbHVlIHBy
b2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9wcm90bywgOSkgLyogaGFz
IHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9jaGFpbiwg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkBAIC0xMjIsOSArMTIzLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc3RyaW5nX2xlbmd0aCwgOSkgLyogaGFz
IHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVu
Z3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAorICAgICAgICBtYWNy
byhvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb24sIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBs
YWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxMCArNDUsMTEgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbQogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCi0gICAgaWYgKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgewotICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEo
KSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQotICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwor
ICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQKKyAg
ICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX291
dF9vZl9saW5lKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAgCiAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwgMCwgMCwgb2Zm
c2V0KTsKICAgICB9CkBAIC01NiwxNiArNTcsMTggQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRnJvbQogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBv
aW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAogICAgIEFTU0VSVChpbnN0cnVjdGlv
blswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKLSAg
ICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsCisgICAgICAgICAgIHx8
IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdF9vdXRfb2ZfbGluZQorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOwog
ICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNl0udS5zdHJ1
Y3R1cmUuZ2V0KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10u
dS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKICAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKICAgICBB
U1NFUlQoY2hhaW4pOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdl
dCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgaWYgKG9mZnNldCA9
PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgbm90Rm91bmQpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5ld1N0cnVj
dHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAo
IWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgCiAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNo
YWluLCBvZmZzZXQpOwogI2Vsc2UKQEAgLTk0LDI0ICs5NywyNCBAQCBQdXRCeUlkU3RhdHVzIFB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2Fz
ZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KAorICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VP
YmplY3RTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxE
YXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAg
ICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBsYWNlLAogICAgICAgICAgICAgICAg
IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwKICAg
ICAgICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAgICAgIG9mZnNldCk7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAw
LCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6IHsKICAgICAgICAgQVNTRVJUKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5z
aXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbklu
dmFsaWRhdGVkKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKICAgICAgICAg
ICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9m
ZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7
CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1w
bGVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRp
b24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCkBAIC0xMTksMTQgKzEyMiwxNCBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSwKICAgICAgICAgICAgICAgICBvZmZz
ZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAgICAgICAKICAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAw
LCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICNlbHNlIC8vIEVOQUJMRShK
SVQpCi0gICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAs
IGludmFsaWRPZmZzZXQpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24g
MTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQdXRCeUlkU3RhdHVz
X2gKICNkZWZpbmUgUHV0QnlJZFN0YXR1c19oCiAKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU1LDcg
KzU2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKDApCiAgICAgICAgICwg
bV9uZXdTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoYWluKDApCi0gICAgICAg
ICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkK
ICAgICB7CiAgICAgfQogICAgIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwK
ICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluLAotICAgICAgICBzaXplX3Qg
b2Zmc2V0KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIDogbV9zdGF0
ZShzdGF0ZSkKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUpCiAgICAgICAg
ICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQpAQCAtNzQsNyArNzUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aCkgPT0gIW1fb2xkU3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKChtX3N0
YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX25ld1N0cnVjdHVyZSk7CiAgICAgICAgIEFT
U0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9zdHJ1Y3R1cmVDaGFpbik7
Ci0gICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IG5vdEZvdW5kKSk7CisgICAgICAgIEFTU0VS
VCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCkg
PT0gKG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJik7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CiAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsg
fQogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RydWN0dXJlQ2hhaW47IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
ZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXIm
KTsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBtX29sZFN0cnVj
dHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwogICAgIFN0cnVjdHVyZUNoYWlu
KiBtX3N0cnVjdHVyZUNoYWluOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBtX29mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
c29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNyArMzIsMTkgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBFTkFCTEUoTExJTlQpIHx8IEVOQUJMRShKSVQpCiBz
dGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yU3RydWN0dXJlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwqIHNwZWNpZmlj
VmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAqY29kZUJsb2NrLT5nbG9i
YWxEYXRhKCksIGlkZW50aWZpZXIsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsK
LSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZz
ZXQpKQogICAgICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cygpOwogICAgIAogICAgIHJl
dHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKFJlc29sdmVHbG9iYWxTdGF0dXM6OlNpbXBsZSwgc3Ry
dWN0dXJlLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkgfHwgRU5BQkxFKEpJVCkKIAogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZv
ckxMSW50KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFJlc29sdmVHbG9iYWxTdGF0
dXNfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0Lmgi
CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDYsMTIg
KzQ3LDEyIEBAIHB1YmxpYzoKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKCkKICAgICAgICAgOiBt
X3N0YXRlKE5vSW5mb3JtYXRpb24pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmUoMCkKLSAgICAgICAg
LCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQog
ICAgIHsKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAgICAgICAgU3Rh
dGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNldCA9IG5vdEZv
dW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1ZhbHVlIHNwZWNp
ZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAg
LCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVibGljOgogICAg
IGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93
UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNl
dDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lm
aWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJl
KiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQg
bV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBjbGFzcyBSZXNv
bHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE1ICsx
MTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2luZ0lubGluZVBy
b3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFtX3N0cnVj
dHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKICAg
ICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNldCBtdXN0IGNv
bnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3RydWN0dXJlKiBz
aW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBzY3JhdGNoR1BS
OwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAgICAgICAgICAg
ICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAgICAgICBpbnQz
Ml90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0
YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDaGVja0ltbVRv
Q2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qgc3RydWN0dXJl
VG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVDaGVj
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9yYWdlTG9hZDsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBkaXNw
bGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0NvbXBhcmU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgZGlzcGxhY2Vt
ZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3
ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbios
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICB2b2lk
IGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVj
dWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCi0g
ICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0
aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTYz
MCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVy
CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAgIGludCBkZXN0
aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwg
c2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgTm9kZUlu
ZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1
c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCiAgICAg
ICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09i
amVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9
IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7
CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3Bl
cnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgfQogICAg
IHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAg
ICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkp
LCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UpKTsKICAg
ICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgc3Rv
cmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0OworICAgIHN0b3Jh
Z2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsKICAgICBz
dG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKICAg
ICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsK
IH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJ
bmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkp
KSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAgIGlmICghZ2V0
QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJl
bnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVj
dHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBAIC0xNjg2LDkg
KzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAg
ICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsKICAgICAgICAg
ICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9iamVjdCwgY3Vy
cmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGN1
cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLmFsbEFy
ZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAgIC8vIFVubGVz
cyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUg
b3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBA
IC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVzdGluYXRpb25P
cGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJbmxpbmVTdG9y
YWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgZGVzdGluYXRp
b25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3Rh
dHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFyZVRvUGFyc2VC
bG9jaygpCkBAIC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFT
U0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9
PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICAg
ICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5v
cGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9p
ZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAgLTIyMjUsNyAr
MjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xvdCksIGdldFNjb3BlQ2hh
aW4sIGdldChzb3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRf
dmFyKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogeworICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6
IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9u
V2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjQxLDggKzIy
MzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUg
PSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2Rl
SW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lk
ZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKQEAgLTIyNTks
MjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0
dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
U3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5v
bGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zm
c2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAg
ICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0
YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJh
c2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9
IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1f
c3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdlLCBiYXNlLCB2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3Rv
cmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0
ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAgICAgICAgICAg
ICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKHB1dEJ5SWRT
dGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwogICAgICAgICAg
ICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0
QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAm
JiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
ID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZUNo
YWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSwKQEAg
LTIzMDgsMTYgKzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzLm5ld1N0
cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAg
IE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRT
dGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRU
b0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9m
ZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksCkBAIC0yMzI2
LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAgICAgICAgICAg
ICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNldCgpICsgb2Zm
c2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGlu
ZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAg
ICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9y
YWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjczOCw4ICsyNzI0LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJl
ZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
ck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZU51
bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBpbmZvLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOgogICAgIGNh
c2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgY2FzZSBv
cF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0
X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2Fz
ZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJs
ZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzIsNiArMTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QgogI2VuZGlmCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UgPSBk
aWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0b3ItPmxhYmVs
KCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0gZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9m
KG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihjYWxsUmV0
dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNjZXNzZXNbaV0u
bV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmJhc2VHUFIg
PSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
dmFsdWVHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBzdHJ1Y3QgUHJv
cGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0b3JlLAogICAg
ICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVjdCBQcm9wZXJ0
eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3RvcmUsCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkT3JTdG9yZSwK
ICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApAQCAtMTYxLDYg
KzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIDogbV9jb2Rl
T3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3RydWN0dXJlSW1t
KQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICwg
bV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3JlKQogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNv
cmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJs
ZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVM
b2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JTdG9yZTsKICNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0
Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRj
aC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNh
bGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVwYXRjaEJ5SWRT
ZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBGdW5jdGlvblB0
ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQgZGZnUmVwYXRj
aEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNv
bnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3QpCiB7CiAgICAg
UmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUyLDE4ICs1Miwx
OSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAKICAgICAvLyBQ
YXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJl
bFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1U
b0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9u
SXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxp
bmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoY29tcGFjdCkK
LSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
TG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBh
Y3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9m
ZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAgICBlbHNlCi0gICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSks
IHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShvZmZzZXQpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgaWYgKGNv
bXBhY3QpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2Fk
TG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21w
YWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUp
LCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFj
dEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9y
ZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Rh
Z0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JTdG9yZSksIHNp
emVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8u
cGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0
Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hl
ZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcgKzEwNiw3IEBA
IHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBsaW5rUmVzdG9y
ZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWls
LCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TbG93
Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xv
d0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkKK3N0YXRpYyB2
b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9jYXRp
b25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWwsIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsxNDAsMjMgQEAg
c3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAgICBjdXJyU3Ry
dWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0LmxvYWRQdHIocHJv
dG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIpOworICAgIGlm
IChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJK
aXQubG9hZFB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSwgcmVzdWx0
R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICB9IGVs
c2UgeworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZk91dE9m
TGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRh
Z0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTI1Myw3ICsyNjQsNyBA
QCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgaWYgKHNsb3Qu
Y2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgp
OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAg
c2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZVZhbHVlLCBz
bG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksMTIgKzM2MCwyMCBAQCBzdGF0aWMgYm9vbCB0
cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICB8fCBzbG90LmNhY2hlZFBy
b3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CiAgICAgICAgICAgICBpZiAo
c2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcikgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAg
ICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2Ny
YXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNh
Y2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHNjcmF0Y2hHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRS
ZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
LCBzY3JhdGNoR1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkNhbGxHZXR0
ZXI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg1LDEzICs0MDQsMjcgQEAgc3RhdGljIGJv
b2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgaGFuZGxlckNhbGwg
PSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0dWJKaXQuanVtcChHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUjIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
ICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BSKTsKLSNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYg
KGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7CisgICAgICAgICAgICAgICAgICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9C
YXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90
LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAgICAgIHN0dWJK
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAg
ICAgfQorI2VuZGlmCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBy
ZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgICAgIGlz
RGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDUwLDcgKzQ4Myw3IEBAIHN0YXRpYyBib29s
IHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGUKICAgICAKICAgICBBU1NFUlQoc2xvdC5zbG90
QmFzZSgpLmlzT2JqZWN0KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFz
ZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAo
IWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjcsNyArNjAwLDcgQEAgc3RhdGlj
IHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJK
aXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVC
YXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpKSB7Cisg
ICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJyaWVyTmVlZGVk
IHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICBz
Y3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgdmFs
dWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAgICAgICAgIHN0
dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNjE5LDIwIEBAIHN0YXRpYyB2b2lk
IGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNl
dCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zm
c2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUp
KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNj
cmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
VGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7
CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAg
IHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBz
dHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAg
ICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgICAg
ICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
Uiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNlbmRpZgogICAg
IApAQCAtNjg1LDIwICs3MTgsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHVi
KAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3RydWN0dXJlLT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uo
c2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
T2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAg
c3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGlmIChzdHJ1
Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZh
bHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMy
KHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAg
ICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICAKQEAgLTc1Miw3
ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBz
a2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MKLSAgICAgICAg
ICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAgICAgaWYgKG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkBAIC04MTUsNyAr
ODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tp
cCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAg
ICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFi
bGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwogICAg
IAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBheWxvYWRHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7
CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxv
YWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBh
eWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdFBh
eWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xvYWRXaXRo
UGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZDMy
V2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApAQCAtNTUwLDcgKzU1MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9CiAgICAgbV9q
aXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAotICAg
ICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywK
KyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hl
Y2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdMb2FkV2l0aFBhdGNoLCBw
YXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKICAgICAgICAg
ICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJl
c3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTY1LDcgKzU2NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmll
cihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIg
dGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2
YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgSklUQ29tcGls
ZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3JlMzJXaXRo
QWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygK
ICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBz
dHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAgY29kZU9yaWdp
biwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9h
ZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHRhZ1N0b3JlV2l0
aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbENvbXBh
Y3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgc2xvd1BhdGgu
Z2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksCkBAIC0z
NTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTEsOCArMzg5MSwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RNYXRjaCA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxl
cjo6Tm90RXF1YWwsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2Jh
bE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAgICAgIC8vIEZh
c3QgY2FzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2Jh
bE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRQ
YXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJl
c3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zm
c2V0KSksIHJlc29sdmVJbmZvR1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihp
bmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAg
ICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2ZUluZm9H
UFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCByZXNvbHZlSW5m
b0dQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNyArNDk3LDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENvbXBpbGVyOjpE
YXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpQYXRjaGFi
bGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCi0gICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNv
bnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQorICAgICAgICBtX2ppdC5j
b252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBKSVRDb21waWxl
cjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0cldpdGhDb21w
YWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgMCks
IHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVMYWJlbCA9IG1f
aml0LmxhYmVsKCk7CkBAIC01MTcsOCArNTE4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAg
ICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5n
ZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9yaWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9h
ZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVD
YXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKICAgICAg
ICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAgICBzcGlsbE1v
ZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2Ug
OiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzYsNyArNTM3LDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3JpdGVCYXJyaWVy
KGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nl
c3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3Jh
Z2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNj
cmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9
IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGls
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRv
bmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01NjYsNyArNTY4LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAg
ICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1faml0LmFkZFBy
b3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRv
Q29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHN0
b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2Fz
dDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8
aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3BlcnR5QWNjZXNzKAorICAg
ICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVj
dHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCisgICAg
ICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRjaC5sYWJl
bCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNhZmVDYXN0PGlu
dDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZlQ2FzdDxpbnQ4
X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGgucmVs
ZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgc3RvcmFn
ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0z
ODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNoID0gbV9qaXQu
YnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKIAog
ICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9m
ZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2Nh
bGVQdHIpLCByZXN1bHRHUFIpOworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZEltbTMyKGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAg
IGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
T3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENvbXBp
bGVyOjpTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKSks
IHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEw
Myw4ICsyMTAzLDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAv
LyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAg
ICAgIG1faml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09i
amVjdCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihz
Y3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQog
CiAgICAgLy8gSXQgaXMgYWNjZXB0YWJsZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBz
Y3JhdGNoLCBzbyBsb25nIGFzIHlvdSdyZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQs
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAg
ICAgaWYgKGlzSlNGaW5hbE9iamVjdChjZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRD
aGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNG
aW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNp
dG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4Njgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODIyLDcgKzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRl
cnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmpl
Y3QoKSk7CiAKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNs
b3RCYXNlKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAog
ICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBp
dCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQg
YXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6
ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9w
ZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBn
ZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJ
T04oKTsKICAgICB9CisgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUp
CiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lk
IGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4p
IG5vcChuKQogCkBAIC0zNTI3LDYgKzM1MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAg
IHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwog
I2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAg
REVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2Uo
cikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJl
Y3QoYikKIApAQCAtMzU2NSw2ICszNTY3LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRp
ZgogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAg
IERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklO
RV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAg
IERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAg
Lyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikg
b2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4p
IG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1
cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1
cmUpOwogCiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAg
ICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJl
Y3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9w
ZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZh
bHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0zNjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9z
ZWxmOgogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAg
ICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAg
IGludCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0
LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQ
Q1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZy
YW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICAgICAgICAgSlNWYWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFt
ZS0+cihleHBlY3RlZCkuanNWYWx1ZSgpOwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUt
PnIoaSkuaSgpIC0gMTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZz
ZXQgPSAwOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAo
c3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vic2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAo
YmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkp
ICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgsIG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJl
Y3RPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9n
ZXRfYnlfcG5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
MTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklO
RV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lk
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfYnlfdmFsKQpAQCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxf
Y2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xp
bmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRf
b3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9k
ZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZToKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmU6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWwgaG90UGF0aEJlZ2luTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0
aEJlZ2luKTsKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0Nv
bXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhC
ZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJl
KSk7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0
aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAg
aW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3Nl
bWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVs
ID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5M
b2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAj
ZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJD
b21waWxhdGkKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhv
dFBhdGhCZWdpbkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7
CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0g
TWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2Nh
dGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAg
ICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNy
b0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50
TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhC
ZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwp
KTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTg2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIGhvdFBhdGhCZWdpbjsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBn
ZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIGdldFN0cnVjdHVyZUNoZWNrOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGli
bGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBnZXREaXNwbGFjZW1lbnRMYWJl
bDsKICNlbHNlCkBAIC0xODUsMTcgKzE4NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgog
CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5
SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBh
dGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAg
ICAgUHJvcGVydHlTdHViR2V0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0
cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJl
Q2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVs
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgcHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxzZQotICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHB1dFJlc3VsdCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0
IGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMiwKICNlbmRpZgorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKICAgICAgICAgICAgIDogbV90eXBlKEdldEJ5SWQp
CiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAg
ICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJl
VG9Db21wYXJlKHN0cnVjdHVyZVRvQ29tcGFyZSkKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJl
Q2hlY2soc3RydWN0dXJlQ2hlY2spCisgICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQo
cHJvcGVydHlTdG9yYWdlTG9hZCkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBn
ZXREaXNwbGFjZW1lbnRMYWJlbChkaXNwbGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yMDYsMTUg
KzIxNCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwK
KyAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVy
dHlTdHViUHV0QnlJZF9ULCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgaG90UGF0aEJlZ2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29u
dmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0Nv
bXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAog
I2Vsc2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
VG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwx
LCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIK
ICNlbmRpZgorICAgICAgICAgICAgKQogICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAg
ICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBo
b3RQYXRoQmVnaW4oaG90UGF0aEJlZ2luKQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29t
cGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAg
ICwgcHV0RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMw
OSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrKS5wcml2YXRlQ29tcGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZm
b3J0KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJv
dG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBp
bGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAg
ICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAg
ICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0
dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVy
bkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBj
b21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5k
ZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAg
ICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAg
ICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHlt
b3JwaGljU3RydWN0dXJlcywgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBj
YWNoZWRPZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRC
eUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0
QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRl
Y29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJl
TGlzdCwgY3VycmVudEluZGV4LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQs
IHNsb3QsIGNhY2hlZE9mZnNldCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlw
ZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAg
ICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBw
cm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0
ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0
dXJlLCBjaGFpbiwgY291bnQsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21w
aWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsK
ICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5k
ZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8s
IHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1
cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlUHV0QnlJZFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNo
ZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzLCBib29sIGRpcmVjdCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKICAgICAgICAgewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxv
Y2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNv
ZGVJbmRleDsKQEAgLTM1OCw4ICszNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgdm9pZCByZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1
YkluZm8qKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1
ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0
QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0
dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNv
ZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zm
c2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBh
dGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
KiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0
Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1l
dGhvZENhbGxMaW5rSW5mbyYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBKU09iamVjdCosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3
NywxMiArMzkxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlTGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwog
ICAgICAgICBKSVRDb2RlIHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0
eUNoZWNrLCBKSVRDb21waWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3Ry
dWN0dXJlQ2hhaW4qLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29t
cGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwor
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHVi
SW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihT
dHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJs
ZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9i
YWxEYXRhKiwgVHJhbXBvbGluZVN0cnVjdHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29t
cGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNl
KTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2Jq
ZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2ln
bmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsK
IApAQCAtNDY4LDEwICs0ODQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBj
b21waWxlR2V0QnlJZEhvdFBhdGgoKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dD
YXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBm
YWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVf
dCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNP
YmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxv
YWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCBy
ZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBj
b21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRU
YWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQ
YXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7
CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQpOwogCiAgICAgICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMK
ICAgICAgICAgdm9pZCBlbWl0QWRkMzJDb25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9w
LCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2Mywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0
aChpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJ
ZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hl
Y2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAg
ICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklE
IHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklE
IG9mZnNldCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hl
ZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwor
ICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lz
dGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2Rl
ID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCk7CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyOSwxMSArNDI5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9v
bCBkZXN0cgogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRo
ZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpo
YXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2Yo
SlNPYmplY3QpKSwgcmVzdWx0LCBzdG9yYWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFn
ZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSkpOwotICAgIH0gZWxzZQotICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRy
ZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAg
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlu
bGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVn
aXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwoSW5zdHJ1YwogCiAKICAgICAvLyBWZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGds
b2JhbE9iamVjdCksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9B
ZGRyZXNzKSwgcmVnVDMpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNF
VE9GKEdsb2JhbFJlc29sdmVJbmZvLCBzdHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBy
ZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAg
IC8vIExvYWQgcHJvcGVydHkuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZG
U0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBs
b2FkMzIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBv
ZmZzZXQpKSwgcmVnVDMpOwotICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1l
c0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdU
MCk7IC8vIHBheWxvYWQKLSAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNF
aWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8v
IHRhZworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVn
VDMsIEtub3duTm90RmluYWwpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBl
bWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsg
KGR5bmFtaWMgPyBPUENPREVfTEVOR1RIKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BD
T0RFX0xFTkdUSChvcF9yZXNvbHZlX2dsb2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTg2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwMSw5ICs3MDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2Jh
bChJbnN0cnVjCiAKICAgICAvLyBMb2FkIGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0
aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFsd2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1f
cHJvcGVydHlTdG9yYWdlKSksIHJlZ1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JK
RUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxv
YWRQdHIoQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29t
cGlsZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RG
aW5hbCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3Bf
bWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8g
QXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAg
ICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiAr
IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlf
aWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3Ry
dWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9w
X2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVu
dEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUp
ID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0
aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICsz
MzQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9D
b21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJ
ZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwog
ICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCByZWdUMik7CisgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlT
dG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFj
dCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0
Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8g
cGF5bG9hZAogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0
cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJ
ZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBA
IHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVS
UlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0
eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZv
KFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNw
bGFjZW1lbnRMYWJlbDIsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxh
dGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJH
ZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFy
ZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVs
MSwgZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3Ry
dWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdl
dEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIENv
bnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
cmVnVDEpOwogICAgIERhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSA9IHN0b3JlUHRyV2l0
aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMiwgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVm
YXVsdE9mZnNldCkpOyAvLyBwYXlsb2FkCiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFi
ZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1Qx
LCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zmc2V0KSk7IC8vIHRhZwogICAgIApAQCAtNDA3LDcgKzQw
OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVt
aXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyLCByZWdUMSwgcmVnVDIsIFNob3VsZEZpbHRlcklt
bWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVy
dHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
byhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIp
KTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwg
aG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRp
c3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyKSk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQzMCwzMCArNDMxLDQxIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGls
ZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3Jp
dGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIHNpemVfdCBj
YWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNl
dDsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlT
dG9yYWdlKCkpLCBiYXNlKTsKLSAgICBlbWl0U3RvcmUob2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQ
YXlsb2FkLCBiYXNlKTsKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkK
KyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIGVtaXRTdG9yZShpbmRleFJlbGF0aXZlVG9CYXNlKGNh
Y2hlZE9mZnNldCksIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGJhc2UpOwogfQogCiAvLyBDb21w
aWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3Zlcndy
aXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVf
dCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVk
T2Zmc2V0OworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAg
IGVtaXRMb2FkKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCBy
ZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBS
ZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQYXlsb2FkOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRM
b2FkKG9mZnNldCwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgdGVt
cCk7CisgICAgZW1pdExvYWQoaW5kZXhSZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1
bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRlbXApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVy
SUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0g
ICAgbG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsK
LSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBj
YWNoZWRPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoaXNJbmxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYmFz
ZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7CisgICAgICAg
IGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJl
c3VsdFRhZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRU
YWcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRk
cmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpLCByZXN1bHRUYWcpOworICAgIGxvYWQzMihBZGRyZXNz
KHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3Vs
dFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsK
ICAgICAvLyBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMgdGhlIGJh
c2VQYXlsb2FkIGFuZCByZWdUMSBjb250YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0aGVtIGZy
b20gdGhlIHN0YWNrLgogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNKQpAQCAt
NDg5LDcgKzUwMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8K
ICAgICAKICAgICAvLyBSZWFsbG9jYXRlIHByb3BlcnR5IHN0b3JhZ2UgaWYgbmVlZGVkLgogICAg
IENhbGwgY2FsbFRhcmdldDsKLSAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRT
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9
IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAg
ICAgLy8gVGhpcyB0cmFtcG9saW5lIHdhcyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZv
cmUgd2UgY2FuIGNhbiBjYWxsIGFnYWluIHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRo
ZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRoZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJv
bSBiZWNvbWluZyBtaXNhbGlnbmVkLgpAQCAtNDk5LDcgKzUxMSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50
KCk7IC8vIGJhc2UKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAg
ICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwu
Y2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3ICs1NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1w
b2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0
aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAg
IFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTYxLDE1
ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAg
IC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBKSVRTdHViczo6Y3RpX29wX2dldF9ieV9pZF9mYWls
LCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAg
ICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVu
Y3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKICAgICAKLSAgICBpbnQgb2Zm
c2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhl
IG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0
aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RB
dE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwx
KSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsg
Ly8gcGF5bG9hZAotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVj
dGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZz
ZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBp
c091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0
aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlk
UmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRS
ZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1
ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgCkBAIC01NzcsMTIgKzU4OCwxMSBA
QCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxk
IHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBk
byBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0
aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMp
KTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0
OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxv
YWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBz
dHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRp
c3BsYWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1
YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0
TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJs
ZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9y
YWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJl
bGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBA
IC02MjksNyArNjM5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxl
bgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNz
LCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9s
ZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03MDAsNyArNzEwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cgogfQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQog
ewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBj
aGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKQEAgLTc2MCw3ICs3NzAsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkp
KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJv
dG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICAKQEAgLTgyOSw3ICs4MzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9j
YXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJl
bnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMs
IGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291
bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2Nh
dGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xk
cyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTc1LDEzICs5ODUsMjcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3Bf
Z2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCBy
ZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVy
SUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5h
bE9iamVjdE1vZGUpCiB7CiAgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAK
LSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCBiYXNlKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVz
RWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3Vs
dFBheWxvYWQpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdo
dCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwor
ICAgIGlmIChmaW5hbE9iamVjdE1vZGUgPT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlz
SW5saW5lID0gYnJhbmNoMzIoTGVzc1RoYW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKKyAgICAgICAgaXNJbmxpbmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRy
dXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3Rv
cmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBk
b25lLmxpbmsodGhpcyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNl
dCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3Bv
aW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIGJhc2UpOworICAgIH0KKyAgICBsb2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGlt
ZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5s
aW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxv
YWQpOworICAgIGxvYWQzMihCYXNlSW5kZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0
eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEwMDYsNiArMTAzMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVj
dGkKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cmVnVDMsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLCBtX251bUNhY2hlYWJsZVNsb3RzKSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJl
Z1QzKTsKICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJl
Z1QzKTsgICAgCiAgICAgCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShy
ZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2Ny
YXRjaCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gs
IEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0g
ICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3Vs
dCk7CisgICAgQVNTRVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmlu
YWxPYmplY3RNb2RlID09IE1heUJlRmluYWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJy
YW5jaDMyKExlc3NUaGFuLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNp
dHkpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7
CisgICAgICAgIGlzSW5saW5lLmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIoSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFj
aXR5ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBk
b25lLmxpbmsodGhpcyk7CisgICAgfSBlbHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNl
dCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3Bv
aW50KCk7CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIHNjcmF0Y2gpOworICAgIH0KKyAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZz
ZXQsIFNjYWxlUHRyLCAtaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwg
cmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNr
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQg
dGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5H
VEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFT
U0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BD
T0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAor
ICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9u
ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZSk7CiAKICAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spOwogICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMzczLDE0ICszOTAsMTQgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0
dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRy
dXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0
cnVjdHVyZSkpKTsKICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVnVDApOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBj
b252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZM
aW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50
TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdU
MCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJl
c3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0
QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBl
bmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0
ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9w
ZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNl
bWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0ICs0NTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJl
LCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1
bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQ
YXRjaChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwog
CiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAg
IGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRl
ckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9u
SW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5
QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8o
UHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAg
LTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1
Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAvLyB2YWx1ZSBpbiBvYmplY3RSZWcuCi12b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUs
IHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIG9mZnNl
dCkpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIHN0
b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZz
ZXQpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2Fk
IGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4K
LXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldCAqIHNp
emVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1
bHQsIG9mZnNldCksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNl
dCkpIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShj
YWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBzaXplb2YoSlNWYWx1
ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7CiB9
CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdp
c3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVy
dHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgY2FjaGVk
T2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHQpOworICAgIGlm
IChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoYmFzZS0+
bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3Jh
Z2UoKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
b24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkK
K3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBK
dW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0
aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAtNTIyLDcgKzU1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAgIAogICAgIC8vIGVtaXQgYSBjYWxs
IG9ubHkgaWYgc3RvcmFnZSByZWFsbG9jIGlzIG5lZWRlZAotICAgIGJvb2wgd2lsbE5lZWRTdG9y
YWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBu
ZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVl
ZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5l
d1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdl
UmVhbGxvYykgewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtl
IGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAg
ICAgICAvLyByZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2
ZW50IHRoZSBzdGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWduZWQuCkBAIC01MzIsNyArNTYyLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHVi
Q2FsbC5za2lwQXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1l
bnQoKTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVl
Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwog
ICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJBcmco
MiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYwMiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGlu
ZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUu
Y29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2
b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVw
YXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTU4MCwxNCArNjEwLDEz
IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91
bGQgcHJvYmFibHkgZ28gdG8gY3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0
IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJl
bGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dl
dF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkg
KiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3Bv
ZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBm
b3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0
YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVy
ZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRj
aEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2lu
LmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5w
cm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7Cisg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1l
bnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsK
IH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJl
Y3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2sp
OwogCkBAIC01OTUsMTEgKzYyNCwxMCBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShD
b2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRf
ZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3Ms
IEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBj
dGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNW
YWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhl
IHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8g
bG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0
cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0
Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQu
cHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOwor
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExh
YmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQog
CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJU
b0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJy
YXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYg
dGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJl
IHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdz
IHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3
ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVn
VDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAs
NyArNzk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3Rv
dHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENv
ZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJl
bmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQn
cyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04MzksNyArODY3LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90
b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1w
TGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcgKzk0Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NCw3ICs5NTQsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCks
IHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9nZW5lcmljOwpAQCAtMTQ4NiwxMyAr
MTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIGlu
dDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigpOwogICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gc3RhY2tGcmFtZS5hcmdzWzRdLnN0cnVjdHVyZSgpOwotICAgIGlu
dDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
KyAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7
CisgICAgCisgICAgQVNTRVJUKG9sZFNpemUgPj0gMCk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBv
bGRTaXplKTsKIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmpl
Y3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9ICpzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0
b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5l
d1NpemUpOwotICAgIGJhc2UtPnNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFz
ZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7Cisg
ICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdT
dHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC0xODE0LDcgKzE4MTcsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKHNsb3Qu
c2xvdEJhc2UoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3QgPSBh
c09iamVjdChzbG90LnNsb3RCYXNlKCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAKICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkKICAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQURE
UkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19mYWlsKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlf
aWQpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtOTQwLDcgKzk0Niw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAg
ICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0
aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyArOTU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xv
dC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNo
YWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAg
ICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVy
YW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkKTsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC05MTksNiArOTE5LDI0IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlz
cGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RG
aW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAg
IGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNh
cGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtv
YmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxvYWRpIFRhZ09mZnNldCAt
IDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZz
ZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VD
YXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2Vu
ZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBv
YmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwg
SW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9v
dXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAg
am1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVT
dG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJl
YWR5OgorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2Jq
ZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9w
ZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUs
IHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtOTMwLDkgKzk0OCw3IEBAIG1hY3JvIHJlc29sdmVH
bG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
ICAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0
MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwg
dDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0x
MDg3LDMxICsxMTAzLDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBk
aXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21v
cnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhl
CisjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdl
IGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0
IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2Ug
ZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3
aGljaCBpcyB3aGF0CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3Jv
IGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAj
IFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdl
IGRvIG5vdCBtb2RpZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBm
b3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGlu
Zy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lk
IHdpbGwgY29udGludWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUu
IEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3Vs
ZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRp
IDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBK
U09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Qw
LCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0g
ICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9w
ZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHBy
b3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0
MQorICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3Jh
dGNoCisgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJd
LCB0MgorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAg
ICAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwg
dDIsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorCisgICAgLm9w
R2V0QnlJZFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9i
eV9pZCkKKyAgICAgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgor
ICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9m
TGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEz
MCw2OCArMTE1OSw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlz
cGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9w
ZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0Mwog
ICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQ
Q10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3
cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAg
Z2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1h
Y3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAy
MFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2Ny
YXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAg
ICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAg
ICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAg
ICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0
X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNw
YXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitf
bGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGlu
ZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywg
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BD
XSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10s
IHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRp
dGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQx
LCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQx
Ci0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFn
ZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9y
YWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0Mwor
ICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAg
ICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2Vu
ZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5k
CisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAg
ICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6
CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0Nl
bGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9u
ZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9y
YWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZM
aW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgot
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3Jh
dGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
IyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAg
ICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3Ry
dWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywg
LmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAg
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0g
ICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAg
ICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5k
b25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5D
aGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJl
Q2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlf
dmFsOgpAQCAtMTI2MSw5ICsxMzE4LDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBs
b2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgotICAg
IGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0
QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MCwgdDIsIHQx
LCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4
LDIyIEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwg
b2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHBy
b3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRT
dG9yYWdlCisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKK21hY3JvIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVl
KQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5s
aW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9y
YWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBh
ZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0
eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2FkcCAtOCAqIElubGluZVN0
b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHZhbHVl
CitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMg
YXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCkBAIC03ODksOCArODA1LDcgQEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93
KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAy
NFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQx
LCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAg
ICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQog
ICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQwCkBAIC05MzcsNyArOTUyLDcg
QEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAot
X2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5
X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCiAgICAgIyBvcGNv
ZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1l
IGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NjMsMzAgQEAgX2xsaW50X29wX2dldF9ieV9p
ZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0s
IHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQyXSwgdDMKLSAgICBzdG9yZXAg
dDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCi0gICAgdmFsdWVQ
cm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
KyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAg
ICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAg
ICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZHAgNjRbUEIs
IFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MSkKKyAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAgICAgICAgIAorICAgIC5vcEdl
dEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
aWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAg
ICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxp
bmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2
NSArMTAwNSw5MyBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0
Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0s
IHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhd
LCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxv
YWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQw
KQotICAgIHdyaXRlQmFycmllcih0MCkKLSAgICBzdG9yZXAgdDAsIFt0MywgdDFdCi0gICAgZGlz
cGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0
MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAg
ICAgICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKKyAg
ICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lk
OgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5
KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRf
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3Jh
Z2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJv
cGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBD
LCA4XSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAg
IGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQot
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0
MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKLSAgICB3cml0ZUJhcnJp
ZXIodDEpCi0gICAgc3RvcmVwIHQxLCBbdDNdCi0gICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEK
LSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkK
KyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAg
ICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEs
IHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQorICAgICAgICAgICAgc3RvcmVw
IHQxLCBbdDNdCisgICAgICAgICAgICBsb2FkcCA0OFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAg
ICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0
Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xk
U3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAg
ICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAg
bG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56
IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2Ny
YXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVl
TnVsbCwgLmRvbmUKKy5sb29wOgorICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90
b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDgsIHNjcmF0Y2gKKyAgICBicG5lcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKKy5kb25lOgogZW5k
CiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRy
YW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9y
YWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0
QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNs
b3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVz
aW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAgICAg
bG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChv
aykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8g
KG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBicGVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQotICAgICAgICAubG9v
cDoKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJl
XSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3Rv
Q2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgOCwgc2NyYXRjaAotICAgICAgICAgICAgYnBu
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29w
Ci0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3Ry
dWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEwNiw4ICsxMTYxLDggQEAgX2xsaW50X29wX2dldF9ieV9w
bmFtZToKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwogICAgIHN1Ymkg
MSwgdDMKICAgICBiaWFlcSB0MywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFi
bGVTbG90c1t0MV0sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQzLCA4XSwgdDAKKyAgICBhZGRp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0MV0sIHQzCisgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQwKQogICAgIGxvYWRpcyA4W1BCLCBQQywg
OF0sIHQxCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCg3KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBA
QCBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhCiAjIFN0cmluZyBmbGFn
cy4KIGNvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAogCisjIFByb3BlcnR5IHN0b3JhZ2Ug
Y29uc3RhbnRzCitpZiBKU1ZBTFVFNjQKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
PSA0CitlbHNlCisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gNgorZW5kCisKICMg
QWxsb2NhdGlvbiBjb25zdGFudHMKIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCA9IDEKQEAgLTMxMiw4ICszMTksNyBAQCBtYWNybyBhbGxvY2F0ZUJh
c2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3Vs
dF0KICAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRd
CiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAg
ICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN0b3Jl
cCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAg
c3RvcmVwIDAsIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XQogICAgIGVuZAog
ZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEgQEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgog
ICAgIGRpc3BhdGNoKDUpCiAKIAorbWFjcm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVj
dCBpcyB0aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCisgICAgIyBwcm9wZXJ0eSBz
dG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFjcm8gd2l0aE91dE9mTGluZVN0b3JhZ2Uob2JqZWN0LCBw
cm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRP
ZkxpbmVTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhh
dCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBw
cm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVz
ZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisg
ICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKKwogX2xsaW50
X29wX2RlbF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfZGVsX2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5k
KQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVy
YW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9u
CiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
UmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBv
cGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRk
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0K
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9w
ZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMy
LDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKLSAgICAgICAgc2l6ZV90IG1fZnVuY3Rpb25O
YW1lT2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmU7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAg
ICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIHNpemVfdCBmdW5jdGlvbk5h
bWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQorICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uTmFtZU9mZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogaW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9p
ZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0
aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAg
ICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGlu
ZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBl
eHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhv
c2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0
ZW1wID0gc3RvcmFnZTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAg
ICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAg
ICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJy
aWVyOjpVbmNoZWNrZWQpOworICAgIH0KKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRv
cklEKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7
CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247Cisj
ZW5kaWYKK30KKwordm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
Ym9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3Jh
Z2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBz
dG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsK
KyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3Jh
Z2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qo
KTsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0Mn
cyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5u
ZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNp
dG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBz
dG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBw
ZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9y
YWdlU2l6ZSk7CiAgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+
KHRlbXApOwotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFn
ZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0
T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAg
ICAgfQogCiAgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9y
YWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCgpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0
b3JhZ2UoKSwgc3RvcmFnZVNpemUpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uOwogI2VuZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9
IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAh
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAyLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZQogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNw
ZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRl
ICYmICFleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CkBAIC0zOTQsNyArNDI0LDcgQEAgYm9vbCBK
U09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlYwogYm9vbCBKU09iamVjdDo6Z2V0UHJv
cGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKQor
ICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBz
dGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC01MTYsMjAgKzU0NiwyMCBAQCB2b2lk
IEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJl
bW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKSA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBzaXplX3Qgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBp
ZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5k
KQorICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90
Rm91bmQpCisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0
ZUluaGVyaXRvcklEKEoKICAgICByZXR1cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJv
cGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9y
YWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6
ZSA+IG9sZFNpemUpOwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9u
IG5vdCByZWx5IG9uIHN0cnVjdHVyZSgpLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRo
ZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9uLgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3Bl
cnR5U3RvcmFnZSA9IG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFn
ZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lu
bGluZVN0b3JhZ2UoKSkgeworICAgIGlmICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAg
IC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZv
ciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJz
LgogICAgICAgICB2b2lkKiB0ZW1wID0gbmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAo
IWdsb2JhbERhdGEuaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pICogbmV3U2l6ZSwgJnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0
ZW1wKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQot
ICAgICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ld
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUg
dG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJl
bmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVy
dHlTdG9yYWdlOwpAQCAtNTk0LDggKzYyMSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0Nl
bGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwot
ICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihv
YmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4g
dHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0
ZXIKICAgICB9OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZpbmUgSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNgotI2Vsc2UKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAotI2VuZGlmCi0KLUNPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSAwKSwgZmluYWxfc3RvcmFnZV9ub25fbmVn
YXRpdmUpOworICAgIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKU0NlbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVu
ZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRy
eSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtMTY5LDI2
ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAu
CiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9m
ZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkp
OworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0
T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAg
ewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KSA6IDA7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24o
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIGJvb2wg
aGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVT
dG9yYWdlKCk7IH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVu
c2FmZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBsb2NhdGlvbiAtIHByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAg
ICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhh
c0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2Fm
ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBv
dXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgp
OyB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4g
bV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0
b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZz
ZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5s
aW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFn
ZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCByZXN1bHQ7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0g
bG9jYXRpb24gLSBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0
SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNp
dHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9m
TGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgICAgICAgICAgdmFsaWRh
dGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlv
blRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25E
YXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBv
ZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBj
b25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAg
IHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9m
ZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9i
YWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5k
ZWZpbmVkKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQo
KTsgfQorICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9m
ZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZv
aWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAg
dm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9y
YWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAg
ICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBib29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpCi0gICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwot
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAg
IHZvaWQgc2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwg
U3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBn
cm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90
IG5ld1NpemUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
cmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRD
YXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0
eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2
b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZP
dXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3Bl
cnR5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0
b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3Rf
aW5saW5lU3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAg
ICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NF
UlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFw
KHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0
KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkg
d2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQg
dHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBK
U09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwog
ICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAt
MzA1LDE5ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9y
CiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAg
ICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlT
dG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgp
OyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25G
b3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRd
OwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBw
dXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3
LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xv
YmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOwor
ICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICsz
NzMsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBB
U1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07
CkBAIC0zODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
ICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0
Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VS
VCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6
ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFj
aXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlz
LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBA
IC00MDAsMTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAg
IAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFn
ZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZ
XTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkg
QEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5
NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0
dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0K
IAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8
fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2
b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlm
ICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAg
ICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3Rv
cmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9y
YWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxp
bmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2Jq
ZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9m
TGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEs
NiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJu
IGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVj
dHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZv
KCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0g
ICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFj
aXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGlu
Zm8pOwpAQCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFz
dEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFz
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVf
dCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJl
KCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAg
ICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAg
ICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgp
OwpAQCAtNjc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNG
dW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsK
KyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBl
aXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVu
dCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rp
b24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAt
NzAwLDEzICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0
V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93
UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgp
KTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdl
KCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3Bl
cnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAg
IHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkp
OwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29t
bWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmlj
RnVuY3Rpb24pCkBAIC03MTQsMTUgKzczMSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVf
dCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBz
aXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7
CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlm
IChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KQotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OwotCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3Rv
cmFnZSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBv
dXRPZkxpbmVTdG9yYWdlKCk7IAorICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93
T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lm
aWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2
ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJy
ZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAg
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJy
ZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewog
ICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwor
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3Ry
dWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpA
QCAtNzgxLDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKAogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENh
cGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNp
dHkgPD0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NF
UlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAg
ICAKLSAgICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3Ry
dWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3Jh
Z2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEs
IG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwot
ICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1
cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3Jh
Z2UoCisgICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3
U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0
cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRS
ZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAg
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVy
ZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMg
JiBBY2Nlc3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlT
dG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFn
ZSgpKQotICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1
Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlm
IChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1
LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdp
c3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYg
KzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAg
cmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hl
cmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoK
Ky8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9y
YWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhl
IG91dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5l
T2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICog
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zm
c2V0KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAg
cmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitp
bmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVt
Q2FjaGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1l
cmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwot
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5
TmFtZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlv
bihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2Fj
aGVhYmxlU2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
cHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAg
CkBAIC02MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wg
Z2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQo
c2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChpID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBt
X29mZnNldEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04
OCwxMiArODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVB
cnJheURhdGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9i
amVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5
TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAg
ICB1aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3Ry
aW5nc1NpemU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlw
ZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBqc0FkZFNsb3dDYXNlKGNh
bGxGcmFtZSwgdjEsIHYyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBzbG90T2Zm
c2V0KQorICAgIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgc2xvdE9mZnNldCkKICAgICB7CiAg
ICAgICAgIEpTQ2VsbCogY2VsbCA9IGJhc2UuYXNDZWxsKCk7CiAgICAgICAgIHNpemVfdCBjb3Vu
dCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgdW5zaWduZWQg
Y29tcHV0ZU51bWJlck9mR0NNYXJrZXJzCiAgICAgcmV0dXJuIGNwdXNUb1VzZTsKIH0KIAotCiBP
cHRpb25zOjpFbnRyeSBPcHRpb25zOjpzX29wdGlvbnNbT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25z
XTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6CkBAIC0x
MTksMTEgKzExOCwxMSBAQCBjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRp
CiB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogewogICAgIC8vIEluaXRpYWxpemUgZWFjaCBv
ZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBGT1JfRUFD
SF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfKSBcCisjZGVmaW5lIEZPUl9FQUNI
X09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8pICAgIFwKICAgICBuYW1lXygpID0g
ZGVmYXVsdFZhbHVlXzsKICAgICBKU0NfT1BUSU9OUyhGT1JfRUFDSF9PUFRJT04pCiAjdW5kZWYg
Rk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAgICAgCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFy
cyB0byBvdmVycmlkZSBvcHRpb25zIGlmIGFwcGxpY2FibGUuCiAgICAgLy8gVGhlIGV2biB2YXIg
c2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBvcHRpb24gcHJlZml4ZWQgd2l0aAogICAgIC8vICJK
U0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAg
ICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgIkpTQ18iICNuYW1lXyk7CiAg
ICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgot
ICAgIAogI2VuZGlmIC8vIFJVTl9USU1FX0hFVVJJU1RJQ1MKIAorI2lmIDAKKyAgICA7IC8vIERl
Y29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgorI2VuZGlmCisgICAgCiAg
ICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0
byB0aGUgb3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VS
VCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1p
emVTb29uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZp
bmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAtNzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBu
ZXh0UG93ZXJPZjIodW5zaWduZWQgdikKIAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAg
IFN0cmluZ0ltcGwqIGtleTsKLSAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpT
Q2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFBy
b3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBT
dHJpbmdJbXBsKiBrZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwg
b2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQs
OCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1
bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVs
ZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25l
ZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVk
IG9mZnNldCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlP
ZmZzZXQgbmV4dE9mZnNldChKU1R5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFi
bGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQu
CiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4g
PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1U
YWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4
ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0
aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFBy
b3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGlu
ZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVk
T2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQ
cm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsK
ICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zm
c2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zm
c2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAor
ICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAg
IEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNp
dHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9m
ZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAi
SlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFD
SVRZIDYKKyNlbHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgor
Cit0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zm
c2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25z
dCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBh
Y2l0eTsKKworLy8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVu
ZCB0byBkbyBmb3J3YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlP
ZmZzZXQpOworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7
CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCk7CitpbmxpbmUgdm9p
ZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBib29sIGlz
VmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zm
c2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJv
cGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUpOworCitpbmxpbmUgdm9pZCBjaGVj
a09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNl
dCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZv
aWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNT
RVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFs
aWRPZmZzZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAg
ICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlk
YXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZz
ZXQpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9p
ZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQo
b2Zmc2V0KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4g
b2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9m
TGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zm
c2V0KTsKKyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBz
aXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZz
ZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZz
ZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAg
cmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90
IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAg
IGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQp
OworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKwor
aW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7Cisg
ICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsg
MTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0
KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNl
dCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBlICYmIG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CisgICAg
cmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJzdFByb3Bl
cnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAgIHJldHVybiBuZXh0UHJvcGVydHlPZmZz
ZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4K
QEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhY2hlZFByb3BlcnR5
VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5
VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJs
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0K
LSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChp
c0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKQEAgLTEwNCw3ICsx
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNl
LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldFZhbHVlKEpT
VmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIG1fZ2V0VmFs
dWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2Us
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0
Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVu
YywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
Z2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01B
UktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2Ug
dGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAgICAgICAgICAgICAvLyAo
Rm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBi
ZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAg
ICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7
CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAg
ICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1
ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwogCi0gICAgICAgIHNpemVf
dCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIENh
Y2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVy
dHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3Bl
cnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4aXN0
aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICAgICAg
IG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBv
ZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gTmV3UHJv
cGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQsNyArNjQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0
KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAor
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzczLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2Jq
ZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZp
c2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhp
cywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFu
c2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAg
ICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQ
aW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVs
bCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNo
cG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBh
Y2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFy
eUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUo
ZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0yMDAs
OCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAg
ICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlw
ZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90
cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkK
LSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eShwcmV2
aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAg
ICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRl
clByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKQEAgLTIz
OSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3Bl
cnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAw
LCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJl
LT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVy
aWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQot
ICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQ
cm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5m
by50eXBlKCkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAt
IDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBA
IC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50
Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkg
KiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkK
K3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1
Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVy
ZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4g
bmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOwor
ICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNp
dHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0y
ODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAog
ICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2
aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQo
KTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJ
blByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAg
ICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBzdHJ1Y3R1
cmUtPm1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0
aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9
CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHdlIG1heSBoYXZlIGdvdCB0byB0
aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0
aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAgLTMyNyw4ICsz
MjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAg
IFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFu
c2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
ICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQ
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZM
aW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbjsKICAgICB9CiAgICAgCkBAIC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgfQogCiAgICAgb2Zmc2V0ID0gdHJhbnNp
dGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICB0
cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpZiAodHJhbnNp
dGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkK
KyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFu
c2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRh
YmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsK
IH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9m
ZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVu
RGljdGlvbmFyeVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlU
YWJsZS0+c2l6ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291
bnQpOwotCisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8u
dHlwZSgpKTsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0
eVRhYmxlLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVy
ID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsK
ICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9m
ZnNldCk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUg
bmV3IHByb3BlcnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAg
ICAgICAgICBpdGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRo
ZWlyIGZpbmFsIGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlDb3VudDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBt
X3Byb3BlcnR5VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyAr
NTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJl
dHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlP
ZmZzZXQgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlv
bkNhY2hlKTsKIApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlXaXRob3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9
IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIGlmIChvdXRP
ZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICBncm93T3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTU5Myw4ICs1
OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUCiAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxEYXRhKTsKIAog
ICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKLSAg
ICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVydHlOYW1lKTsKIH0KIAog
dm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBAQCBQYXNzT3duUHRyPFBy
b3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4g
U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3Bl
cnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVy
dHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBt
X29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJv
cGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJv
cGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5m
by50eXBlKCkpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFs
aWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJs
ZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsK
IAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVl
ID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZp
Y1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09
IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNldChnZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChh
dHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBAIHNpemVfdCBTdHJ1Y3R1
cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAg
ICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVkIG5ld09mZnNldDsKLQot
ICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgbmV3
T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgZWxzZQot
ICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKKyAgICBQcm9wZXJ0
eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRPZmZzZXQobV90eXBlSW5m
by50eXBlKCkpOwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShn
bG9iYWxEYXRhLCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSkpOwogCkBAIC03MTEsNyArNzA2LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNW
YWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3MTksNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmUo
UHJvcGVydHlOYW1lIHByCiAgICAgaWYgKCFwb3NpdGlvbi5maXJzdCkKICAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAog
ICAgIG1fcHJvcGVydHlUYWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAgICBtX3Byb3BlcnR5VGFi
bGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1
bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgc2l6
ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJl
KiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFBy
b3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNW
YWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0
dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hh
bmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAzLDMyICsxMDMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNF
eHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAg
ICAgYm9vbCBkaWRUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9
Ci0gICAgICAgIGJvb2wgcHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICBib29s
IHB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5U3RvcmFnZVNpemUoKSk7
CisgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXpl
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewot
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
bV9vZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49
IGN1cnJlbnRTaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gb3V0
T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNh
cGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAg
ICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHko
KSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlLT5zaXplKCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgfQot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9y
YWdlU2l6ZSgpOyAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91
bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAg
ICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBh
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90
b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAh
PSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTE0OSwxOCArMTQ5LDExNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKLSAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NF
UlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91
cy5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOworICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAg
ICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0
dXJlVG9GaW5kKTsKIAotICAgICAgICB2b2lkIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OwotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6
ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsg
cmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAg
ICBzaXplX3QgaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNV
c2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsKLQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBn
ZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5
KCk7CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZv
KTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFs
T2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0
T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSAhPSBGaW5hbE9iamVj
dFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAg
ICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQp
OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZz
X2luZm8pOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gdGhpcy0+
aW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5l
Q2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNl
dCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2Jq
ZWN0VHlwZTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemVGb3JLbm93bkZp
bmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUlu
Zm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1
bHQ7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5saW5lU3RvcmFnZUNhcGFj
aXR5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxp
bmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9y
YWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5s
aW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25l
ZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
cHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKKyAgICAgICAgfQorICAg
ICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7
CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdFZhbGlkT2Zmc2V0KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zm
c2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkg
eworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBtX3Byb3BlcnR5VGFibGUt
PnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxpbmVTdG9yYWdlQ2FwYWNp
dHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgLSAxOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGJvb2wgaXNWYWxp
ZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBvZmZzZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgpCisgICAgICAgICAgICAgICAg
JiYgb2Zmc2V0IDw9IGxhc3RWYWxpZE9mZnNldCgpOworICAgICAgICB9CisKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFs
dWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc1Jl
YWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87
IH0KQEAgLTE3Nyw3ICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBo
YXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uRW51bWVy
YWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDog
bV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4g
IUpTQzo6aXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9u
VHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRv
RGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFy
eUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9w
ZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKTsKQEAgLTMwMSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50
IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNl
IHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0
LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGgu
Ci0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQg
KyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFs
aWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSBjb25z
dDsKQEAgLTMxMCw4ICs0MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbm9PZmZzZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKIAogICAgICAgICBUeXBlSW5mbyBt
X3R5cGVJbmZvOwpAQCAtMzM2LDEwICs0MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hw
b2ludFNldDsKIAotICAgICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5Owor
ICAgICAgICB1aW50MzJfdCBtX291dE9mTGluZUNhcGFjaXR5OwogCiAgICAgICAgIC8vIG1fb2Zm
c2V0IGRvZXMgbm90IGFjY291bnQgZm9yIGFub255bW91cyBzbG90cwotICAgICAgICBpbnQgbV9v
ZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogCiAgICAgICAgIHVuc2ln
bmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0
eVRhYmxlIDogMTsKQEAgLTM1MywyNiArNDUyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5l
IHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
KTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90
Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9w
ZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUu
dWlkKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90
Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zm
c2V0OwogICAgIH0KIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAK
ICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRX
aXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50
cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zm
c2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="159159"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150843</attachid>
            <date>2012-07-04 14:41:24 -0700</date>
            <delta_ts>2012-07-04 16:34:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_20.diff</filename>
            <type>text/plain</type>
            <size>263864</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDkgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFW
MTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBB
QUhAWgorICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVj
dHVyZUBKU0NAQFNBUEFWMTJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBBQUhA
WgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2Fk
ZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTbG93
Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBA
V1RGQEBQQVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3RhdGlj
R2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9AMTJA
SEBaCkBAIC0xOTIsNyArMTkyLDYgQEAgRVhQT1JUUwogICAgID9mcm9tQElkZW50aWZpZXJASlND
QEBTQT9BVjEyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQcm9wZXJ0
eVNsb3RASlNDQEBBQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/ZnVuY3Rp
b25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEJWVVN0cmluZ0AyQFhaCi0gICAgP2dl
dEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAVlByb3BlcnR5TmFtZUAyQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q2FsbGFibGVPYmplY3RTbG93QEpTQ0BAWUFQQVZKU0NlbGxAMUBQQVYyMUBAWgpA
QCAtMjExLDExICsyMTAsMTIgQEAgRVhQT1JUUwogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJl
dGVyQEpTQ0BAU0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlND
QEAkMEFAQFdURkBAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKKyAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAg
ID9nZXR0ZXJAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAg
P2dsb2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgogICAg
ID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCisgICAgP2dyb3dPdXRPZkxpbmVT
dG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFUEFWPyRXcml0ZUJhcnJpZXJCYXNlQFc0VW5rbm93bkBK
U0NAQEAyQEFBVkpTR2xvYmFsRGF0YUAyQElJQFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBB
QUVYWFoKLSAgICA/Z3Jvd1Byb3BlcnR5U3RvcmFnZUBKU09iamVjdEBKU0NAQFFBRVBBVj8kV3Jp
dGVCYXJyaWVyQmFzZUBXNFVua25vd25ASlNDQEBAMkBBQVZKU0dsb2JhbERhdGFAMkBJSUBaCiAg
ICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZK
U1ZhbHVlQDJAMkBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBJQFoKICAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNT
dGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBAWgpAQCAtMzI4LDcgKzMyOCw3IEBAIEVYUE9SVFMKICAg
ICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmls
ZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2Ft
cGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBs
QFVTdHJpbmdASlNDQEBRQkU/QVYxMkBJSUBaCi0gICAgP3N1Z2dlc3RlZE5ld1Byb3BlcnR5U3Rv
cmFnZVNpemVAU3RydWN0dXJlQEpTQ0BAUUFFSVhaCisgICAgP3N1Z2dlc3RlZE5ld091dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFw
QEpTQ0BAUUFFUEFWSW5jcmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3Rv
dHlwZUBKU1ZhbHVlQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAg
ID90aGlzT2JqZWN0QERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBYWgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk0LDYgKzEwOTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxQcm9wZXJ0eU9mZnNl
dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXFByb3BlcnR5U2xvdC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQy
NzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZFMTU5Mjc1RDIwMDRD
QjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZGNDI3NzIxNTkyNzVE
ODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1
QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZG
RkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBE
RkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGlz
YXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVH
bG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1
OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdD
RkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNyw2ICsyMTA5LDcg
QEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJ
CQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywK
IAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywK
KwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLywKIAkJ
CQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKIAkJCQk2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8sCiAJCQkJNjVDMDJG
QkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEsNiArMjgxNCw3IEBA
CiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQ
cm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJfaW1t
X1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1aW50OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNElt
bTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBB
Uk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIzLDQ2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkp
OworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGlu
c3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAg
ICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFdICYgMHhGMDAwKSk7
CisgICAgICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAgcHRyWzBdIHw9IE9Q
X0xEUl9pbW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4MEYwMCkgPDwg
NDsKKyAgICAgICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAg
ICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6
CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAgICAgICAgICAgIHB0
clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQUREX2ltbV9UMzsKKyAg
ICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0OworICAgICAgICAgICAg
cHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0FE
RF9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2go
cHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdP
ZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1
LDYgKzI5NSwzNiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgbV9sYWJlbDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxlTG9hZExhYmVsOgor
ICAgIC8vCisgICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRzIGEgbG9hZFB0ciBp
bnN0cnVjdGlvbiB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgorICAgIC8vIHNvIHRo
YXQ6CisgICAgLy8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIpCisgICAgLy8KKyAg
ICAvLyBiZWNvbWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJbW1QdHIoaSksIGEs
IGIpCisgICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAg
ICAgCisgICAgcHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCgpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwoQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAgICAgICAgICAgIDog
bV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQXNzZW1i
bGVyTGFiZWwgbV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVsUHRyOgogICAgIC8v
CkBAIC01NjIsNiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBt
X2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
CisgICAgeworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAg
ICBMYWJlbCBsYWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3RlZDoKICAgICB7CiAg
ICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0
YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExv
YWQoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkp
OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsOwogY2xh
c3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFM
YWJlbDMyOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xhc3MgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0eXBlcyBhcmUgYWxs
IHByZXR0eSBtdWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBDb2RlUHRyIChvciBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFtZSkuICBUaGVzZQpA
QCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRh
dGFMYWJlbFB0ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJl
bDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KGludCBv
ZmZzZXQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9uKCkKQEAgLTE0Niw2
ICsxNDgsMTUgQEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CitwdWJsaWM6CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKKyAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4cGxpY2l0IENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAgICAgOiBDb2RlTG9j
YXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkgeyB9Cit9OworCiBp
bmxpbmUgQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVj
dGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VU
KG9mZnNldCk7CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOwogfQogCitp
bmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29u
dmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NFUlRfVkFMSURfQ09E
RV9PRkZTRVQob2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2Fk
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5rQnVmZmVyOjpDb2Rl
UmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygiICAgIENvZGUgYXQg
WyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNp
emUoKSk7CiAgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2RlKCksIG1fc2l6ZSwg
IiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIgICAgICAgIDxubyBk
aXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRp
c2Fzc2VtYmx5IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTGlua0J1ZmZlciB7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxD
b21wYWN0OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJl
bDMyOwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQ
dHI7CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29u
dmVydGlibGVMb2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpAQCAtMTgwLDYgKzE4
MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21w
YWN0KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQo
bGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxv
YWQgbG9jYXRpb25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXI6OmdldExp
bmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOworICAgIH0K
KwogICAgIC8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBj
YWxsLCBnaXZlbiBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgY29k
ZS4KICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2FsbCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNjAwLDYgKzYwMCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQorICAg
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49MCAmJiBh
ZGRyZXNzLm9mZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJXaWRlOEJpdElt
bWVkaWF0ZShkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAgQ29udmVydGlibGVM
b2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVy
dGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoYWRkcmVz
cy5tX3B0ciwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9t
cihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
MiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9s
aW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aExvYWQobGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJl
bCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZlKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
bGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2Fk
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAgICAgICBw
dHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2FzZSBPUF9N
T1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAg
ICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFi
ZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJn
ZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lk
X3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWlu
OgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTog
ewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAg
ICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpA
QCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAg
ICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQo
KSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
N10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lm
aWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2Us
IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgs
NyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAg
ICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAg
ICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVk
LCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQor
ICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAg
LTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAh
PSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQp
KSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBu
b3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAg
ICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAgICAg
UHJvcGVydHlPZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobXlPZmZzZXQg
PT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChteU9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3VuZDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICByZXN1bHQubV9z
dHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIy
MywxMSArMjIzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpOworICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQocmVzdWx0
Lm1fb2Zmc2V0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5t
X29mZnNldCkpIHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Nsb3dQYXRoOwogICAg
ICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKICAgICAgICAgcmVzdWx0Lm1fY2hh
aW4uY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBHZXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgR2V0QnlJZFN0YXR1c19oCiAKKyNp
bmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCkBAIC00NiwxMyArNDcsMTMgQEAgcHVibGljOgogCiAg
ICAgR2V0QnlJZFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQotICAg
ICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZz
ZXQpCiAgICAgewogICAgIH0KICAgICAKICAgICBHZXRCeUlkU3RhdHVzKAogICAgICAgICBTdGF0
ZSBzdGF0ZSwgYm9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0ID0gU3RydWN0dXJlU2V0KCksCi0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwg
SlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4gY2hh
aW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IGludmFs
aWRPZmZzZXQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVj
dHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCiAgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwg
bV9jaGFpbihjaGFpbikKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0K
ICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFpbjsgfSAvLyBSZXR1cm5zIGVtcHR5IHZlY3RvciBpZiB0aGlzIGlzIGEgZGlyZWN0IGFjY2Vz
cy4KICAgICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmlj
VmFsdWU7IH0gLy8gUmV0dXJucyBKU1ZhbHVlKCkgaWYgdGhlcmUgaXMgbm8gc3BlY2lmaWMgdmFs
dWUuCi0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAK
ICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9
CiAgICAgCkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlU2V0IG1fc3Ry
dWN0dXJlU2V0OwogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBtX2NoYWluOwogICAgIEpTVmFsdWUg
bV9zcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBtX29mZnNldDsKICAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDgsNiArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVf
d2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8o
b3BfcmVzb2x2ZV93aXRoX3RoaXMsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYnlfaWQsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAor
ICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIC8qIGhhcyB2YWx1ZSBw
cm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfc2VsZiwgOSkgLyogaGFz
IHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9wcm90bywg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9p
ZF9jaGFpbiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkBAIC0xMjIsOSArMTIzLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc3RyaW5nX2xlbmd0aCwg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1
bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAorICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTIx
ODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTEgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbQogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCi0g
ICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgewot
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQotICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWQKKyAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0
X2J5X2lkX291dF9vZl9saW5lKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAg
CiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwg
MCwgMCwgb2Zmc2V0KTsKICAgICB9CkBAIC01NiwxNiArNTcsMTggQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAogICAgIEFTU0VSVChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QKLSAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsCisgICAg
ICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZQorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmUpOwogICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1
Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKICAgICBBU1NFUlQobmV3U3RydWN0dXJl
KTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1
Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgaWYg
KG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsK
KyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgCiAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGNoYWluLCBvZmZzZXQpOwogI2Vsc2UKQEAgLTk0LDI0ICs5NywyNCBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAg
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0
KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBs
YWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkg
eworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBsYWNlLAogICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKSwKICAgICAgICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAgICAgIG9mZnNldCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKICAgICAgICAgQVNTRVJUKHN0dWJJbmZvLnUucHV0
QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8u
dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgK
ICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAg
ICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAg
ICAgICBTaW1wbGVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJ
ZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCkBAIC0xMTksMTQgKzEyMiwxNCBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSwKICAgICAgICAgICAg
ICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAg
ICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICNlbHNlIC8v
IEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQdXRC
eUlkU3RhdHVzX2gKICNkZWZpbmUgUHV0QnlJZFN0YXR1c19oCiAKKyNpbmNsdWRlICJQcm9wZXJ0
eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKDApCiAg
ICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoYWluKDAp
Ci0gICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxp
ZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluLAotICAgICAg
ICBzaXplX3Qgb2Zmc2V0KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUp
CiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQpAQCAtNzQsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gIW1fb2xkU3RydWN0dXJlKTsKICAgICAgICAgQVNT
RVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX25ld1N0cnVjdHVyZSk7CiAg
ICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9zdHJ1Y3R1
cmVDaGFpbik7Ci0gICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IG5vdEZvdW5kKSk7CisgICAg
ICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNT
bG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpKTsKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJl
OyB9CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0
cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RydWN0dXJlQ2hhaW47IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBt
X29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwogICAgIFN0cnVj
dHVyZUNoYWluKiBtX3N0cnVjdHVyZUNoYWluOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNyAr
MzIsMTkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBFTkFCTEUoTExJTlQpIHx8IEVOQUJM
RShKSVQpCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yU3RydWN0dXJlKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmllciYgaWRl
bnRpZmllcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwq
IHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAqY29kZUJs
b2NrLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cygpOwogICAg
IAogICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKFJlc29sdmVHbG9iYWxTdGF0dXM6OlNp
bXBsZSwgc3RydWN0dXJlLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogfQorI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkgfHwgRU5BQkxFKEpJVCkKIAogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMg
Y29tcHV0ZUZvckxMSW50KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAx
MjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFJlc29sdmVH
bG9iYWxTdGF0dXNfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDYsMTIgKzQ3LDEyIEBAIHB1YmxpYzoKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKCkKICAg
ICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmUoMCkK
LSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAg
ICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNl
dCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBj
bGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2lu
Z0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNl
dCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3Ry
dWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBz
Y3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAg
ICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAg
ICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50
MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFD
aGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
c3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1
Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxv
YWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
ZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxG
dW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
ICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYp
OwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJ
bmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5l
U3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAg
ICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0Owot
ICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNp
emVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNl
dE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAg
IH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0g
ICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAg
ICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0
YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7
Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0Owor
ICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0
KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nl
c3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVj
dHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0
dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAg
IGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1
cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmds
ZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBA
IC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsK
ICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9i
amVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3Rv
cmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNl
dCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAg
IC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFz
ZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9u
ZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVz
dGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJ
bmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAg
ZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFy
ZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUu
b3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAor
ICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVj
dGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAg
LTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xvdCksIGdl
dFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogewor
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0
X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9k
ZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0y
MjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBOb2RlSW5k
ZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsK
QEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJ
ZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7
Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPmlzVXNp
bmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
cHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3Rv
cmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVj
dCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNl
dE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwg
YmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9wSW5mbyht
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdlLCBiYXNl
LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vz
c0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0Rh
dGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNl
KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAgICAgICAg
ICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRT
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVj
dHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0
cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly
ZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3Rh
dHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYg
KHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQo
KSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09i
amVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSks
CkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNl
dCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9m
ZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZp
ZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFw
cGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjczOCw4
ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5T2Zm
c2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFn
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBp
bmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFy
OgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6
CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0
b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0g
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZn
LmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vz
c2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBz
dHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0
b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVj
dCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9h
ZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3Rv
cmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2Fk
T3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApA
QCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAg
IDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3Ry
dWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3JlKQogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q29u
dmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JTdG9yZTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVw
YXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBG
dW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3Qp
CiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUy
LDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAK
ICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9h
ZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZElu
c3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxl
TG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAo
Y29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JT
dG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAgICBlbHNl
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2Fk
T3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0
aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZz
ZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
OwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9h
ZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRM
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2
ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcg
KzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBs
aW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNj
ZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJl
bEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9u
TGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkK
K3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNl
TGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsx
NDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAg
ICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0Lmxv
YWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIp
OworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBv
ZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYK
KyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJl
c3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTI1Myw3
ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
aWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFz
ZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAo
IWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksMTIgKzM2MCwyMCBAQCBzdGF0
aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICB8fCBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CiAgICAgICAg
ICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRl
cikgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwotICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkg
ewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFz
ZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlv
bkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg1LDEzICs0MDQsMjcgQEAg
c3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgaGFu
ZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0dWJKaXQuanVtcChHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BS
KTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9C
YXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7CisgICAgICAgICAgICAgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BS
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAg
ICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKICAgICAg
ICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDUwLDcgKzQ4Myw3IEBAIHN0
YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGUKICAgICAKICAgICBBU1NFUlQo
c2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
ZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
ICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjcsNyArNjAwLDcg
QEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3JvQXNzZW1i
bGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAm
JiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJy
aWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewog
ICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFz
ZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAg
ICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNjE5LDIwIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAg
ICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNh
Y2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwor
ICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldElu
SW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkp
OworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNl
bmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5z
aXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3Ry
dWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBl
bHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
c3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICAK
QEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRl
KiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MK
LSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
IT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAgICAgaWYg
KG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkBA
IC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3Rh
dAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0g
ICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0x
KSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBh
eWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5
bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRh
Z0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRj
aChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9q
aXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApAQCAtNTUwLDcg
KzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9
CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVj
b3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdMb2FkV2l0
aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwK
ICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxp
bnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3Vs
dFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTY1LDcgKzU2
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdy
aXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJh
cnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGlibGVMb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAg
SklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0
b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0
eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2Rl
T3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHRh
Z1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAg
c2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQ
UiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTEsOCArMzg5
MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RNYXRjaCA9IG1faml0LmJyYW5jaFB0cihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAg
ICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZl
SW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NF
UlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNo
MzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0
ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVz
b2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCBy
ZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNyArNDk3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAg
ICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgSklUQ29t
cGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQorICAgICAg
ICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBK
SVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0
cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVM
YWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcsOCArNTE4LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFj
Y2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3Jp
Z2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBz
bG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90Pihi
YXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9y
aWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdl
TG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFi
ZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BS
KSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAg
ICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0
ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzYsNyArNTM3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJv
cGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSks
IHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdp
dGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCiAgICAgSklUQ29tcGlsZXI6
OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01NjYsNyArNTY4LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAog
ICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1f
aml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxD
b21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVs
LCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3BlcnR5QWNj
ZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxv
YWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQ
YXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNh
ZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
ICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAg
ICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJl
YWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNo
ID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2
ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21w
aWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkK
KyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZElt
bTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7
CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIs
IEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKEpTVmFsdWUpKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhl
cml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3Qn
cyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0YWJs
ZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlvdSdy
ZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChj
ZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcg
KzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAg
ICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1
MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUs
IGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAg
aWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dl
bmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dp
dGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5F
X09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9n
ZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5
KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYgKzM1
MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6
CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09QQ09E
RShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlf
aWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIp
IG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICszNTY3
LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3Ry
dWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAg
ICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAg
aW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2
UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZz
ZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0z
NjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIEFT
U0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVl
ID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2
UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2Jq
ZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkp
OwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNW
YWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgp
OwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vi
c2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgs
IG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNW
YWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAg
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVG
SU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
OgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpA
QCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGlu
ZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0
dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRp
b24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5w
YXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0Y2gu
YmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51Lmdl
dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3Bl
cnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1dEJ5
SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFz
ZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5l
LnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNrOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBnZXREaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4
NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9U
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJl
Z2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVU
b0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
cHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
ZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNw
bGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNl
bWVudExhYmVsMiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExh
YmVsMiwKICNlbmRpZgorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3Vs
dCkKICAgICAgICAgICAgIDogbV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhC
ZWdpbikKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29t
cGFyZSkKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNw
bGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29t
cGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVy
dHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAgKQog
ICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2lu
KQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQp
CiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUp
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFiZWwo
ZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29t
cGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGpp
dChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZz
ZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9y
cGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5
bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0
ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBp
bGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVu
dEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2Fs
bEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENo
YWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNp
emVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0
Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAg
IGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50
LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVj
b2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50
LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAg
ICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1f
Ynl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0
QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZv
Kik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2Rl
YmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRC
eUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9i
YWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFk
ZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVD
b21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVm
Zm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwot
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVj
dHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1
cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1
Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1
Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3Qp
OwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNv
bXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVj
dHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9i
YWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9
CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtu
b3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1
bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsK
ICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQg
YmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAg
ICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQp
OwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNl
dCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAg
ICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRkMzJD
b25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1
bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZp
ZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVn
LCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQg
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJl
Z2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1l
dGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0
b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9y
YWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBzdG9y
YWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENs
YXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAgICAg
ICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAvLyBW
ZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBy
ZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBz
dHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1f
cHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgT0JK
RUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAgIGxv
YWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwogICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVOR1RI
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2ds
b2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBMb2Fk
IGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFs
d2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1Qw
KTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29s
dmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1QwLCBy
ZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdU
MCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2lu
ZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVy
cHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChv
cF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBt
X2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29tcGls
ZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAg
ICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7Cisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxl
TG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBs
b2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hH
ZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbENv
bXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNl
dFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7
IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJ
ZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNl
R2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5h
cHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1f
Ynl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3Vs
dCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3Bl
cnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBw
dXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJ
bnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkp
KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMy
IGRpc3BsYWNlbWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdU
MiwgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2Fk
CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVz
c09mZnNldFBhdGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zm
c2V0KSk7IC8vIHRhZwogICAgIApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJl
Z1QyLCByZWdUMSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8u
YXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBt
X2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxh
Y2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNz
Q29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVy
dHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxh
Y2VtZW50TGFiZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTQzMCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVU
YWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBl
bWl0U3RvcmUob2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAo
aXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IGVtaXRTdG9yZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2
YWx1ZVBheWxvYWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGlu
ZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVU
b0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQ
YXlsb2FkOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCBy
ZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhS
ZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRl
bXApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNz
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1
bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7
Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkg
eworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRh
ZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5
bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgp
LCByZXN1bHRUYWcpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBh
c3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250
YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShN
SVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9jYXRl
IHByb3BlcnR5IHN0b3JhZ2UgaWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAgICBi
b29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYg
KHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5lIHdh
cyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFnYWlu
IHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRo
ZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVkLgpA
QCAtNDk5LDcgKzUxMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAgc3R1
YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1
bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cihu
ZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3
ICs1NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBh
dGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0
byBKSVRTdHViczo6Y3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFu
eXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0Nh
bGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9p
ZF9zZWxmX2ZhaWwpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICog
Y2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2Vy
dHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9y
LgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVU
b0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwg
b2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcK
KyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNo
ZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsg
Ly8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNh
Y2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8v
IHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVC
bG9jayk7CiAgICAgCkBAIC01NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlk
UmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9w
dXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyBy
aWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dl
bmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0
ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9m
ZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUg
U3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxv
YWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1l
bnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUo
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+
aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90
UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
cHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAv
LyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0
X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03
MDAsNyArNzEwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgog
fQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEg
SlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3Ry
dWN0dXJlKTsKQEAgLTc2MCw3ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2Rl
TG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1
cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4MzksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5j
b2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdU
MCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNv
ZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQo
Y291bnQpOwpAQCAtOTc1LDEzICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihy
ZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsK
IH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0
ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAgQVNT
RVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBsb2Fk
UHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQdHIo
QmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1vZGUg
PT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1Ro
YW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxp
bmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAgICBs
b2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNlSW5k
ZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVzc0Zv
cihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3Rz
KSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1p
dFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
SW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9i
amVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoc2Ny
YXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVvZihK
U1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmlu
YWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmso
dGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0KKyAg
ICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3Rv
cmFnZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9u
Kgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlv
biBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
KGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUu
b3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hl
Y2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBtX2ludGVycHJldGVy
LT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9tZXRo
b2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAKICAg
ICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwog
ICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpAQCAtMzczLDE0ICszOTAsMTQgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aChp
bnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKICAgICBhZGRTbG93
Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2Jq
ZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDApOworICAgIENvbnZlcnRpYmxl
TG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDApOwog
ICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBh
Y3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9m
ZnNldCksIHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJlc3VsdCh0aGlzKTsKIAogICAgIEVORF9V
TklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdp
biwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWws
IHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5k
KFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVj
b2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hl
Y2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsLCBwdXRSZXN1bHQpKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAt
NDQwLDE0ICs0NTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9u
KgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSksIHJlZ1QyKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2Fk
ID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRM
YWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMSwgQWRkcmVzcyhyZWdU
MiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwogCiAgICAgRU5EX1VOSU5URVJSVVBURURf
U0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAs
IHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbklu
Zm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlk
LCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlz
cGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9i
eXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5
U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3Jl
IGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAv
LyB2YWx1ZSBpbiBvYmplY3RSZWcuCi12b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2
b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0
ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhi
YXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0
b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIG9mZnNldCkpOworICAgIGlmIChpc0lubGluZU9m
ZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJh
c2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAq
IG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNz
KGJhc2UsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRP
ZmZzZXQpKSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2FkIGZyb20gYW4gb2JqZWN0J3MgcHJvcGVy
dHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNo
ZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0g
ICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBy
ZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIG9mZnNldCksIHJlc3VsdCk7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNpemVvZihK
U1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVzdWx0LCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewot
ICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikpLCByZXN1bHQpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVk
T2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2Fk
UHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0
KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBj
YWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAg
ICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAt
NTIyLDcgKzU1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8K
ICNlbmRpZgogICAgIAogICAgIC8vIGVtaXQgYSBjYWxsIG9ubHkgaWYgc3RvcmFnZSByZWFsbG9j
IGlzIG5lZWRlZAotICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdlUmVhbGxvYykgewogICAgICAgICAvLyBU
aGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtlIGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBj
YW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAgICAgICAvLyByZW1vdmUgdGhlIHJldHVy
biBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2ZW50IHRoZSBzdGFjayBmcm9tIGJlY29t
aW5nIG1pc2FsaWduZWQuCkBAIC01MzIsNyArNTYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8g
YmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gaWRlbnQKICAgICAgICAg
c3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVlCi0gICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKHJl
Z1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJBcmcoMiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYw
Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICByZXBh
dGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGluZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9j
YXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklU
OjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2Vs
ZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KGNvZGVCbG9jayk7CiAKQEAgLTU4MCwxNCArNjEwLDEzIEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5
SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gY3RpX29w
X2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5n
IHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0
dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAot
ICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAv
LyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0
aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7
Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxh
YmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFj
ZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rp
b25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0
KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNP
dXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0
QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRC
eUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewogICAgIFJlcGF0
Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01OTUsMTEgKzYyNCwxMCBA
QCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxk
IHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBk
byBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0
aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMp
KTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0K
ICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBm
cm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVj
dHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4u
ZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxh
Y2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0
aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNl
dChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlz
T3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1Bh
dGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAg
LTY0Myw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3Ms
IEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJyYXlfZmFpbCkpOwogfQogCi12b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBUaGUgcHJvdG90
eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29k
ZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVu
Y2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdz
IHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxs
ZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRf
cHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxp
c3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKIHsKICAgICBKdW1w
IGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgYm9v
bCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVT
dHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBl
eGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBh
IFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmpl
Y3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEp
CkBAIC04MzksNyArODY3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9u
TGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3Vu
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3Vy
cmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAt
OTE0LDcgKzk0Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QK
ICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVs
KHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY291bnQpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIxODY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk1NCw3ICs5NTQsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hl
R2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5j
YWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxG
cmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
ICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHN0dWJJbmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNz
X2dldF9ieV9pZF9nZW5lcmljOwpAQCAtMTQ4NiwxMyArMTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIGludDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJh
bWUuYXJnc1szXS5pbnQzMigpOwogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gc3RhY2tG
cmFtZS5hcmdzWzRdLnN0cnVjdHVyZSgpOwotICAgIGludDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpbnQzMl90IG5ld1NpemUgPSBu
ZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgCisgICAgQVNTRVJUKG9sZFNp
emUgPj0gMCk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAgIEFTU0VSVChi
YXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChiYXNl
VmFsdWUpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpzdGFja0ZyYW1lLmdsb2Jh
bERhdGE7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOwotICAgIGJhc2UtPnNldFBy
b3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CisgICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3Rv
cmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJu
IGJhc2U7CiB9CkBAIC0xODE0LDcgKzE4MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09iamVjdCgpKTsK
ICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkp
OwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICBpZiAoc2xv
dC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29w
X2dldF9ieV9pZF9wcm90b19mYWlsKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIApAQCAtOTQwLDcgKzk0Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFz
ZSgpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQ
cm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkg
eworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyAr
OTU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgp
KTsKICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
c3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAg
ICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5
cGVDaGFpbihleGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1
cmVDaGFpbi5zZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9v
dXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBw
Y1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAg
ICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5LDI0
IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2Jq
ZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3Rl
cSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0
QW5kU3RvcmFnZQorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNp
dHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdl
LCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCittYWNybyBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB0YWcsIHBh
eWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNhcGFjaXR5LCAu
aXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFu
ZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgam1wIC5yZWFkeQorLmlzSW5saW5lOgor
ICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVTdG9yYWdlICsgSW5saW5lU3RvcmFnZUNh
cGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJlYWR5OgorICAgIGxvYWRpIFRhZ09mZnNl
dCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlP
ZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3Jh
Z2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQK
K2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5kcyBh
cmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpA
QCAtOTMwLDkgKzk0OCw3IEBAIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMTJbUENdLCBz
bG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCi0gICAg
bG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwgdDIsIHQzKQogICAgIGxvYWRpIDRbUENd
LCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0xMDg3LDMxICsxMTAzLDQ0IEBAIF9sbGlu
dF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9v
cF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisjIG9wY29kZS4gV2UgZG8sIGhvd2V2
ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNl
CisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdl
dF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2Fj
aGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisjIHdlIHdvdWxk
IGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9y
YWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMg
Z2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCi0gICAg
IyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBh
bnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJl
c3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKLSAgICAjIHRv
IHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBw
YXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5
LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQog
ICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
XSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0Miwg
dDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQz
LAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkK
KyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQorICAgICAgICAgICAgbG9hZGkgVGFn
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgorICAgICAgICAgICAgc3RvcmVp
IHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgICAgICBsb2FkaSAzMltQQ10sIHQxCisg
ICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDIsIHQxKQorICAgICAgICAgICAgZGlz
cGF0Y2goOSkKKyAgICAgICAgZW5kKQorCisgICAgLm9wR2V0QnlJZFNsb3c6CisgICAgICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICAgICAgZGlzcGF0Y2go
OSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIGdldEJ5SWQod2l0aElubGluZVN0
b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEzMCw2OCArMTE1OSw5NiBAQCBfbGxpbnRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3Bf
cHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5
SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQotICAg
IHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAg
ICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNj
cmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgICAgICAgICB3
cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFn
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisg
ICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0
aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5
SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9v
Zl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10s
IHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAu
b3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCiAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxDaGVja3Mo
dDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAg
ICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQyLCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKLSAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQxCi0gICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KLSAgICBk
aXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDAsCisgICAgICAg
IHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAg
ICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0MworICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSwg
dDIpCisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICAgICAgICAgIGxv
YWRpIDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10K
KyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBub0FkZGl0aW9uYWxD
aGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWlu
Q2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRT
dHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHBy
b3RvCisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBi
dHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwg
b2sgZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6CisgICAgbG9hZGkgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDQs
IHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChv
bGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihu
b0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAot
ICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAg
Y29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1
cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAKLSAgICAgICAgICAgIGxvYWRwIDI4
W1BDXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3Nj
cmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3Jh
dGNoLCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0g
ICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtv
bGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0gICAgICAgICAgICBicG5lcSBvbGRTdHJ1
Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCi0gICAg
ICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAg
cHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdl
KQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6
CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxp
bmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTI2MSw5ICsxMzE4LDgg
QEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAg
ICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251
bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgotICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAs
IDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBhZGRp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0M10sIHQwCisgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkaSA0W1BDXSwg
dDAKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMTg2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4LDIyIEBAIF9sbGludF9vcF9pc19zdHJp
bmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUp
CisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHByb3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9y
YWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9y
YWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAgbG9hZHAgLTggKiBJ
bmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhd
LCB2YWx1ZQorZW5kCisKK21hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQocHJvcGVy
dHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVlKQorICAgIGJpbHQgcHJvcGVydHlPZmZz
ZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQor
ICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5s
aW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UK
Ky5yZWFkeToKKyAgICBsb2FkcCAtOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRT
dG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHZhbHVlCitlbmQKKwogbWFjcm8gcmVzb2x2ZUds
b2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4
W1BCLCBQQywgOF0gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCkBAIC03ODksOCArODA1LDcg
QEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAyNFtQQiwgUEMsIDhdLCBzbG93CiAgICAg
bG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwg
dDAKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQogICAgIGxvYWRwIChzaXplIC0gMSkgKiA4
W1BCLCBQQywgOF0sIHQwCkBAIC05MzcsNyArOTUyLDcgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAotX2xsaW50X29wX2dldF9ieV9pZDoKK21h
Y3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5k
IHdlIGRvIG5vdCBtb2RpZnkgdGhlCiAgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxv
dyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4
LDE4ICs5NjMsMzAgQEAgX2xsaW50X29wX2dldF9ieV9pZDoKICAgICBsb2FkcCAzMltQQiwgUEMs
IDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAg
ICBsb2FkcCBbdDAsIHQyXSwgdDMKLSAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQotICAgIGxv
YWRwIDY0W1BCLCBQQywgOF0sIHQxCi0gICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKLSAgICBkaXNw
YXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgKKyAgICAgICAgdDMsCisgICAgICAgIHQw
LAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICAgICAgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAg
ICAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0
eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIs
IHQxLCA4XQorICAgICAgICAgICAgbG9hZHAgNjRbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAg
IHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MSkKKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAg
ICAgIGVuZCkKKyAgICAgICAgICAgIAorICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3BhdGNoKDkp
CitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9y
YWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9v
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2NSArMTAwNSw5MyBAQCBfbGxpbnRfb3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0
X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgMzJbUEIsIFBD
LCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5
SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQotICAgIHdyaXRlQmFycmllcih0MCkK
LSAgICBzdG9yZXAgdDAsIFt0MywgdDFdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0
eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3Bl
cnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpcyA0MFtQQiwgUEMs
IDhdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkK
KyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNo
LCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAg
IGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGlu
ZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFu
c2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5l
OgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRy
YW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMyW1BC
LCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQ
dXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKICAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENo
ZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
KQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSkKLSAgICB3cml0ZUJhcnJpZXIodDEpCi0gICAgc3RvcmVwIHQxLCBb
dDNdCi0gICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEKLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAg
ICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKHQxKQorICAgICAgICAgICAgc3RvcmVwIHQxLCBbdDNdCisgICAgICAgICAgICBs
b2FkcCA0OFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorZW5k
CisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQK
KworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorICAg
IGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2Ny
YXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKKy5sb29wOgorICAg
IGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRw
IDgsIHNjcmF0Y2gKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVy
ZV0sIFZhbHVlTnVsbCwgLmxvb3AKKy5kb25lOgogZW5kCiAKIF9sbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRp
b25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0Fk
ZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0QnlJZFRyYW5zaXRpb24oCi0gICAgICAg
IG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCi0gICAgICAgICAgICBjb25zdCBw
cm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVn
aXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAgICAgbG9hZHAgNTZbUEIsIFBDLCA4XSwgc2Ny
YXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBz
Y3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCi0gICAgICAgICAgICBicGVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJl
XSwgVmFsdWVOdWxsLCAuZG9uZQotICAgICAgICAubG9vcDoKLSAgICAgICAgICAgIGxvYWRwIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAg
ICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAg
IGFkZHAgOCwgc2NyYXRjaAotICAgICAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlw
ZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29wCi0gICAgICAgIC5kb25lOgotICAgICAg
ICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJ
bmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5DaGVja3Ms
IHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEw
Niw4ICsxMTYxLDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdLCB0MwogICAgIHN1YmkgMSwgdDMKICAgICBiaWFlcSB0MywgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0MV0sIC5vcEdldEJ5UG5h
bWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAg
ICBsb2FkcCBbdDAsIHQzLCA4XSwgdDAKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fb2Zmc2V0QmFzZVt0MV0sIHQzCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MywgdDAsIHQwKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgc3RvcmVwIHQwLCBb
Y2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCg3KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBAQCBjb25zdCBMTEludFJldHVyblBDID0g
QXJndW1lbnRDb3VudCArIFRhCiAjIFN0cmluZyBmbGFncy4KIGNvbnN0IEhhc2hGbGFnczhCaXRC
dWZmZXIgPSA2NAogCisjIFByb3BlcnR5IHN0b3JhZ2UgY29uc3RhbnRzCitpZiBKU1ZBTFVFNjQK
KyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSA0CitlbHNlCisgICAgY29uc3QgSW5s
aW5lU3RvcmFnZUNhcGFjaXR5ID0gNgorZW5kCisKICMgQWxsb2NhdGlvbiBjb25zdGFudHMKIGlm
IEpTVkFMVUU2NAogICAgIGNvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKQEAg
LTMxMiw4ICszMTksNyBAQCBtYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5k
CiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIHN0cnVj
dHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09i
amVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0
LCByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX291
dE9mTGluZVN0b3JhZ2VbcmVzdWx0XQogICAgIGVuZAogZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEg
QEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgogICAgIGRpc3BhdGNoKDUpCiAKIAorbWFj
cm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlv
bikKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgcHJvcGVydHkgc3RvcmFn
ZSwgYW5kIHRoYXQgdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNl
ZC4KKyAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFj
cm8gd2l0aE91dE9mTGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVh
dGlvbikKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdF0sIHBy
b3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHlTdG9yYWdlIHJl
Z2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBwcm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhh
dCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVzZWQKKyAgICAjIGlmIHRoZSBvYmplY3Qg
cG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgICAgY29udGludWF0aW9uKHByb3BlcnR5
U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKKwogX2xsaW50X29wX2RlbF9ieV9pZDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5X2lk
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24g
MTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgZW5k
CiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5kKQotICAgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAg
ICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19h
PyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCkBAIC01
NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgIGVsc2lmIG9wZXJhbmRz
LnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECi0gICAgICAgICAgICAkYXNt
LnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWEje3g4
NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVubGVzcyBJbW1l
ZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KICAgICAgICAgICAgICAgICAkYXNtLnB1
dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9wZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJl
OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1
cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZTsKLSAgICAgICAgc2l6ZV90IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBT
dHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpOyB9Ci0gICAgICAgIHNpemVfdCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlv
bk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAg
ICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJpdmF0
ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTIx
ODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
biA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAgICAgdmlz
aXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlm
CisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
CisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9y
YWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2Jq
ZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2Ug
R0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUt
cHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKKyAgICAgICAg
dmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3Rv
cmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGlu
ZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOworICAgIH0K
KworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0No
ZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CisjZW5kaWYKK30KKwordm9pZCBKU0ZpbmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1
bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xh
dGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0g
ZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3Qt
PnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Ci0gICAgaWYgKHRoaXNPYmplY3Qt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0
b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3Rv
cmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RvcmFnZSkg
eworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKICAgICAgICAgLy8gV2UgaGF2ZSB0
aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0MncyB0aGlyc3QgZm9yIHRoZSBibG9vZCBv
ZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5uZWQgcG9pbnRlcnMuCiAgICAgICAgIHZv
aWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNpdG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAs
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6
ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBzdG9yYWdlLT5zbG90KCksIHN0b3JhZ2VT
aXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CiAgICAgICAgIHN0b3Jh
Z2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hl
Y2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFn
ZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNPYmpl
Y3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOworICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0b3JhZ2UoKSwgc3RvcmFnZVNpemUpOwor
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogI2Vu
ZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNP
YmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAg
ICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBvYmotPnN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICBp
ZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVz
ICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAy
LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogCiAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBp
ZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRlICYmICFleGVjLT5nbG9iYWxEYXRhKCku
aXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7CkBAIC0zOTQsNyArNDI0LDcgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1l
cmFibGUoRXhlYwogYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1
cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0
cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlz
IGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHBy
b2JhYmx5CkBAIC01MTYsMjAgKzU0NiwyMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1
bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQor
ICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3Qgb2Zmc2V0Owor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92
ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dFVu
ZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG9mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVk
QXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5
LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEoKICAgICByZXR1
cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpn
cm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNp
emUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZM
aW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXpl
X3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAgLy8g
SXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVyZSgp
LCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9u
LgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVydHlT
dG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBt
X291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5
U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgeworICAgIGlm
ICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0
ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hv
IGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0g
bmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC50cnlBbGxv
Y2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pICogbmV3U2l6ZSwg
JnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdl
ID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLQotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3UHJvcGVydHlT
dG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ldOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZv
ciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJz
LgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVydHlTdG9yYWdlOwpAQCAtNTk0LDggKzYy
MSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKIHsKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVf
dCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwotICAgIGlmIChvZmZzZXQgPT0gV1RGOjpu
b3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgp
LT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwp
OworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihvYmplY3QtPmdldERpcmVjdE9mZnNldChv
ZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzks
MTggKzc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBY2Nlc3NvciAgICAgPSAxIDw8
IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0ZXIKICAgICB9OwogCi0jaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
NgotI2Vsc2UKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAot
I2VuZGlmCi0KLUNPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSA+PSAwKSwgZmluYWxfc3RvcmFnZV9ub25fbmVnYXRpdmUpOworICAgIGNsYXNzIEpTRmlu
YWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtMTY5LDI2ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NF
UlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlv
biBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgICAgIEpTVmFsdWUgZ2V0RGly
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgp
OworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0
LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVl
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsK
KyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwg
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAg
ICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9j
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgSlNDZWxsKiBz
cGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0
aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0
IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVTdG9yYWdlKCk7IH0KKyAgICAgICAgQ29u
c3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRo
aXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZVVuc2FmZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbiAtIHByb3Bl
cnR5U3RvcmFnZSgpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0
b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFn
ZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhh
c0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2Fm
ZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAg
ICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisgICAgICAgIFByb3BlcnR5U3Rv
cmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgp
OyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25G
b3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
JmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAg
ICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
b2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKKyAg
ICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCByZXN1bHQ7CisgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0gbG9jYXRpb24gLSBpbmxpbmVTdG9yYWdl
VW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9mTGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0OworICAgICAgICAgICAgdmFsaWRhdGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICAv
LyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBvZmZzZXRzLgotICAgICAgICBKU1ZhbHVl
IGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0
b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBw
cm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0K
LSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7
IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5kZWZpbmVkKCk7IH0KKyAgICAgICAgSlNW
YWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVy
biBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQorICAgICAgICB2b2lkIHB1dERp
cmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFs
RGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RP
ZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkt
PnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2
OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAg
IGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9u
c0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVf
dCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0
b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9Ci0gICAg
ICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdldCgpCi0gICAgICAgICAgICAgICAgfHwg
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0
aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgc2V0UHJvcGVydHlTdG9yYWdl
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwgU3RydWN0dXJlKik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93T3V0T2ZMaW5lU3RvcmFnZShKU0ds
b2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICB2b2lk
IHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vz
c2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAg
ICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShK
U0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAg
IHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0
b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgICAg
IHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBm
bGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yNjEs
NyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7
CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCk7CiAgICAg
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC0yNzEsNyArMzA0LDcg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB7CiAg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkg
fHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CiAgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgICAgICAvLyBU
byBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxv
dy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpT
Tm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICAgICAgdm9pZCBy
ZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAtMzA1LDE5ICszMzgsNiBAQCBDT01QSUxF
X0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHZvaWQgaXNPYmplY3Qo
KTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAgICAgICAKLSAgICAgICAgQ29uc3RQcm9w
ZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0
b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgp
IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0KLSAgICAgICAgY29uc3QgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtv
ZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KICAgICAgICAg
dGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2Jh
bERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5
U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGZpbmRQcm9w
ZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBT
dHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCi0gICAgICAgIFN0
b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmllciBt
X291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5o
ZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICszNzMsMTQgQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBs
aWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgp
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGhpcy0+
c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJU
KGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0zODEsNiArNDAxLDggQEAgQ09N
UElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbmxp
bmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0
b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU0Zp
bmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAg
ICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9
PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NF
UlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNh
cGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9y
YWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNT
RVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBAIC00MDAsMTMgKzQyNSwxMyBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0Zp
bmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVT
dG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFnZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gbV9pbmxp
bmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZXTsKICAgICB9OwogCiBpbmxpbmUgSlNG
aW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkgQEAgaW5saW5lIHNpemVfdCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9i
amVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0
LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVj
dCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5U3Rv
cmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlT
dG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFTU0VSVChzdG9y
YWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNV
c2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmlu
YWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGlj
X2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlmICghc3RvcmFnZSkgeworICAgICAgICBB
U1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIEFTU0VSVCgh
c3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBA
IGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNP
YmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3Rv
cmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNDZWxsKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRo
aXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
dGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBK
U09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJuIGNyZWF0ZUluaGVyaXRvcklEKGdsb2Jh
bERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6aW5saW5lU3RvcmFnZUNhcGFj
aXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNf
aW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5
OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCk7Ci19Ci0KIGlubGluZSBib29s
IEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25zdAogewogICAgIHJl
dHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGluZm8pOwpAQCAtNjExLDEwICs2MjcsMTAg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFzdEdldE93blBybwogQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+
aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5o
YXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAg
ICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdl
dCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtNjc2LDggKzY5Miw4IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoc3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVz
OwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1
cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIGlmIChv
ZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJp
YnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBz
cGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAg
ICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAg
ICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24g
IT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAtNzAwLDEzICs3MTYsMTQgQEAgaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICBpZiAoKG1vZGUgPT0g
UHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdl
KCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
KSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+
c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAgICAgUHJvcGVydHlTdG9y
YWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgICAgIGlmIChzdHJ1Y3R1
cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdTdG9y
YWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdl
Q2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBu
ZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogCi0gICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIHZh
bGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxp
ZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBj
YWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCkBAIC03MTQsMTUgKzcz
MSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1
cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0g
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2Ug
PSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgbmV3U3RvcmFn
ZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotCi0gICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdlKCk7IAorICAg
ICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxE
YXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisK
KyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShn
bG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZz
ZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcg
cHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVu
dGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hh
YmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0Nl
bGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0
TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgdGhpcy0+c3RydWN0dXJlKCksIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKICAgICAK
LSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
VmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3Jh
Z2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNzgxLDIyICs4MDAsMjIgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiBpbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQob2xkQ2FwYWNpdHkgPD0gbmV3U3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAKLSAgICBpZiAob2xkQ2FwYWNpdHkg
PT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgaWYgKG9s
ZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAg
ICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9w
ZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNldFByb3BlcnR5U3RvcmFnZShn
bG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCisgICAgICAgIGdsb2JhbERhdGEs
IG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHNl
dE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsK
IH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNz
YXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIFByb3Bl
cnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpKQotICAgICAgICBuZXdTdG9yYWdl
ID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFn
ZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0
Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9y
YWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdy
b3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3Ry
dWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxl
T2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdT
dG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1
ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdpc3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAog
ewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYgKzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5F
IFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAgcmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMg
aXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBhIGxv
YWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoKKy8vIEZvciBpbmxpbmUgb2Zmc2V0czog
YSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0
LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCitp
bmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAg
IHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAt
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSArIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBp
bmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNP
dXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNl
dEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgaW50IG9mZnNldFJlbGF0aXZl
VG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZz
ZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZz
ZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iq
IEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMgPSAwOwogICAg
IGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8t
PnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAgJiYgIW8t
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCi0gICAgICAgIG51bUNh
Y2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAg
ICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6
ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
PigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5h
bWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwotICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpKTsKKyAgICBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRh
dGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAg
ICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICAgICAgc3RhdGlj
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwot
ICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVf
dCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAgICAg
ICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsK
LSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgCkBAIC02MywxMSArNTcsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQm
IG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQoc2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpID49IG1fbnVtQ2FjaGVhYmxl
U2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgb2Zmc2V0
ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBtX29mZnNldEJhc2U7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04OCwxMiArODIsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJv
dGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHBy
b3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5h
bWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkK
ICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkp
KTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVjdC0+c3RydWN0dXJlKCktPmZpcnN0
VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWlu
PiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAgICB1aW50MzJfdCBtX251bUNhY2hlYWJs
ZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7CisgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
OCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAg
IGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RG
Ojpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVj
dHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZp
Y1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBqc0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKICAgICB9
CiAKLSAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBzbG90T2Zmc2V0KQorICAgIGlubGluZSBzaXplX3Qg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eU9mZnNldCYgc2xvdE9mZnNldCkKICAgICB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGJh
c2UuYXNDZWxsKCk7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJz
CiAgICAgcmV0dXJuIGNwdXNUb1VzZTsKIH0KIAotCiBPcHRpb25zOjpFbnRyeSBPcHRpb25zOjpz
X29wdGlvbnNbT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25zXTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFt
ZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6CkBAIC0xMTksMTEgKzExOCwxMSBAQCBjb25zdCBP
cHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpCiB2b2lkIE9wdGlvbnM6OmluaXRpYWxp
emUoKQogewogICAgIC8vIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWly
IGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfKSBcCisjZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8sIGRl
ZmF1bHRWYWx1ZV8pICAgIFwKICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsKICAgICBKU0Nf
T1BUSU9OUyhGT1JfRUFDSF9PUFRJT04pCiAjdW5kZWYgRk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAg
ICAgCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFycyB0byBvdmVycmlkZSBvcHRpb25zIGlm
IGFwcGxpY2FibGUuCiAgICAgLy8gVGhlIGV2biB2YXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRo
ZSBvcHRpb24gcHJlZml4ZWQgd2l0aAogICAgIC8vICJKU0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIg
QEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVy
aXN0aWMobmFtZV8oKSwgIkpTQ18iICNuYW1lXyk7CiAgICAgSlNDX09QVElPTlMoRk9SX0VBQ0hf
T1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgotICAgIAogI2VuZGlmIC8vIFJVTl9USU1F
X0hFVVJJU1RJQ1MKIAorI2lmIDAKKyAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8g
YXV0byBpbmRlbnRhdGlvbgorI2VuZGlmCisgICAgCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdo
ZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0byB0aGUgb3B0aW9uczoKICAgICBBU1NF
UlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JP
cHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VSVCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1pemVTb29uKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZu
ZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFibGVf
aAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAt
NzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQgdikK
IAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKLSAgICB1
bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAot
ICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93
bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKICAgICAgICAg
LCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQsOCArMTc1LDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1bnVzZWQgZW50cmllcyBpbiB0aGUgcHJv
cGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICBib29s
IGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25lZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0g
ICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCk7CisgICAgUHJvcGVydHlP
ZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9w
ZXJ0eU9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChKU1R5cGUp
OwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFibGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhh
cyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQuCiAgICAgUGFzc093blB0cjxQcm9wZXJ0
eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0Nh
cGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkKiBtX2lu
ZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291
bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAg
ICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4gPiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAxNjsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBA
QCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAg
Ly8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVk
Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7Cisg
ICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAg
ICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIo
bmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAog
aW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxs
KiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBv
dGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRh
YmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGluZSBib29sIFByb3BlcnR5VGFibGU6Omhh
c0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zm
c2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0
RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0
RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0
cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG1fZGVsZXRlZE9mZnNldHMt
Pmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5yZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJu
IG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNl
dCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVk
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNl
dHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2ln
bmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFBy
b3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9
CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlw
ZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zmc2V0KCkpCisgICAgICAgIHJldHVybiBn
ZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBl
KQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAorICAgIHJldHVybiBzaXplKCkgKyBmaXJz
dE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4g
UHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3du
ZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBt
X2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBpbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFi
bGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IHNpemVvZihQcm9wZXJ0eVRh
YmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIHJl
c3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkp
OworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXpl
b2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNl
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZp
bmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAiSlNUeXBlLmgiCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDYKKyNlbHNlCisjZGVmaW5lIElO
TElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgorCit0eXBlZGVmIGludCBQcm9wZXJ0eU9m
ZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsK
K3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJ
TkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91
dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKworLy8gRGVjbGFyZSBhbGwg
b2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVuZCB0byBkbyBmb3J3YXJkIGNhbGxzLgor
aW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9m
ZnNldChQcm9wZXJ0eU9mZnNldCk7CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0
eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5l
IGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBv
ZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZz
ZXRJblJlc3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3QgbnVt
YmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5l
IHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBl
KTsKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlP
ZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNl
dEZvcihKU1R5cGUpOworCitpbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA+
PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsK
KyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zm
c2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQKKyAgICAgICAgICAgfHwg
dHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAgICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQo
b2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwg
dHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSBi
b29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zm
c2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0OworfQorCitp
bmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNh
cGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9mTGluZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gIWlzSW5s
aW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQp
OworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZzZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0
OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQo
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3Jh
Z2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZz
ZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAg
cmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworfQorCitpbmxpbmUgc2l6
ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPCBmaXJz
dE91dE9mTGluZU9mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG9mZnNldCAt
IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKworaW5saW5lIHNpemVfdCBudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gRmluYWxPYmpl
Y3RUeXBlKQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsKKyAgICByZXR1cm4gbnVtYmVyT2ZP
dXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0KTsKK30KKworaW5saW5lIFByb3BlcnR5
T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlw
ZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgaWYgKHR5cGUg
IT0gRmluYWxPYmplY3RUeXBlICYmIG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICBy
ZXR1cm4gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CisgICAgcmV0dXJuIG9mZnNldCArIDE7Cit9CisK
K2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBl
KQoreworICAgIHJldHVybiBuZXh0UHJvcGVydHlPZmZzZXRGb3IoaW52YWxpZE9mZnNldCwgdHlw
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
aAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUg
IkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0
eU9mZnNldC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZTsgfQogICAgICAgICBib29sIGlz
Q2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNo
ZWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9m
ZnNldCgpIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc0NhY2hlYWJsZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiBtX29mZnNldDsKQEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qg
b2Zmc2V0KQorICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUg
dmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKHZhbHVlKTsKICAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpA
QCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmdl
dHRlckZ1bmMgPSBnZXR0ZXJGdW5jOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDYWNo
ZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1
bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1Zh
bHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVuYywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyRnVuYyk7CiAgICAgICAgICAg
ICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKQEAgLTIwNiw3ICsyMDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0
IGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJl
ZW4gdXNlZCBiZWZvcmUuCiAgICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywg
d2UgZG9uJ3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5p
bmdmdWxseSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IDA7CisgICAg
ICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFBy
b3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAgICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgICAgICBKU1Zh
bHVlIG1fdGhpc1ZhbHVlOwogCi0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hl
ZFByb3BlcnR5VHlwZTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXpl
X3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJh
c2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBl
ID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICAgICAgIG1fYmFzZSA9IGJhc2U7CiAgICAgICAg
ICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0TmV3
UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0
TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgbV90eXBlID0gTmV3UHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jh
c2UgPSBiYXNlOwpAQCAtNjQsNyArNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAg
ICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJs
ZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgeworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAg
ICAgIH0KQEAgLTcyLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNp
emVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAg
IGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsOCArMTU2LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQog
ICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9j
bGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0
aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5m
by5pc0ZpbmFsT2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6
IDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHko
MCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNl
KQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3
OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1f
cHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8o
JnNfaW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRj
aGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0
KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eSgwKQorICAgICwgbV9vZmZzZXQo
aW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5k
KQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRl
clNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0yMDAsOCArMjAwLDggQEAgU3RydWN0dXJlOjpT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0
YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8o
cHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJ
bml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2
aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0
KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eShwcmV2aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0
eSkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1f
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1f
cHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1f
cHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBtX29mZnNldCArIDEpOworICAgICAg
ICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHko
Z2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlw
ZUluZm8udHlwZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNDcs
NyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAg
IH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1h
cChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKIAogICAgIGZvciAo
cHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAg
ICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBAIC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lk
IFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgfQogfQogCi1pbmxpbmUg
c2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENhcGFjaXR5
KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJy
ZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCiAgICAgICAgIHJldHVy
biA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiAyOwogfQogCi12b2lkIFN0cnVjdHVy
ZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKK3ZvaWQgU3RydWN0dXJlOjpncm93T3V0
T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0
UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAg
bV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRP
ZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3Bl
cnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5l
U3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4gbmV4dFByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOworICAgIHJldHVybiBuZXh0T3V0T2ZMaW5l
U3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1
cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1
Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVl
LmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2
LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAg
ICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlv
bi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKTsKICAgICAgICAgaWYgKHNwZWNpZmlj
VmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJblByZXZpb3VzICE9IHNwZWNpZmljVmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNp
dGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlz
dGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fdHlwZUluZm8udHlwZSgpKTsK
ICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldDsKICAgICAgICAg
cmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHJldHVybiAwOwogfQog
Ci1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lm
aWMgZnVuY3Rpb24sIHdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAg
ICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1l
IGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAgLTMyNyw4ICszMjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9
IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0
ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJv
cGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OworICAgICAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dPdXRPZkxp
bmVDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAgICAgCkBA
IC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0CiAgICAgfQogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
IGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4g
dHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jv
d091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNl
dDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFu
c2l0aW9uKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9m
ZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKIAogICAgICAgICBz
aXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpOwogICAgICAgICBW
ZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291bnQpOwotCisgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBm
aXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgUHJvcGVy
dHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAgICAg
Zm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsKICAgICAgICAgICAgIHZhbHVlc1tpXSA9
IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9mZnNldCk7CiAgICAgICAgICAgICAvLyBV
cGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUgbmV3IHByb3BlcnR5IG9mZnNldHMKLSAg
ICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBp
ICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhl
IG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRoZWlyIGZpbmFsIGxvY2F0aW9ucwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlDb3VudDsgaSsrKQotICAgICAg
ICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsK
KyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zm
c2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmNsZWFyRGVs
ZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXplX3Qg
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIApAQCAtNTc5LDEzICs1
ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbgogICAgIAog
ICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAo
cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAg
ICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIGlmIChvdXRPZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVD
YXBhY2l0eSgpKQorICAgICAgICBncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICByZXR1cm4g
b2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVCgh
bV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTU5Myw4ICs1OTQsNyBAQCBzaXplX3QgU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVj
ZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxEYXRhKTsKIAogICAgIHBpbigpOwotICAgIHNpemVfdCBv
ZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gb2Zmc2V0OworICAgIHJl
dHVybiByZW1vdmUocHJvcGVydHlOYW1lKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBA
IC02MzksMjAgKzYzOSwyMCBAQCBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6
Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3B5UHJvcGVydHlU
YWJsZUZvclBpbm5pbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVy
KQogewotICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlU
YWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlU
YWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29mZnNldCkpOworICAgIHJldHVybiBh
ZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBv
d25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShudW1iZXJPZlNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKSk7CiB9CiAKLXNpemVf
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxs
KiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGds
b2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gV1RG
Ojpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlk
KCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBXVEY6Om5vdEZvdW5k
OworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgIGF0dHJpYnV0ZXMgPSBlbnRy
eS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUu
Z2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1
bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFs
dWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJU
KGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQo
IUpTQzo6aXNWYWxpZE9mZnNldChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSkpOwogCiAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udEVudW0pCkBA
IC02OTgsMTIgKzY5OCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNH
bG8KICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAo
KTsKIAotICAgIHVuc2lnbmVkIG5ld09mZnNldDsKLQotICAgIGlmIChtX3Byb3BlcnR5VGFibGUt
Pmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxl
LT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgZWxzZQotICAgICAgICBuZXdPZmZzZXQgPSBtX3By
b3BlcnR5VGFibGUtPnNpemUoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBtX3By
b3BlcnR5VGFibGUtPm5leHRPZmZzZXQobV90eXBlSW5mby50eXBlKCkpOwogCiAgICAgbV9wcm9w
ZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCB0aGlzLCByZXAsIG5l
d09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOwogCkBAIC03MTEsNyArNzA2LDcg
QEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJldHVybiBu
ZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3
MTksNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByCiAgICAgaWYg
KCFwb3NpdGlvbi5maXJzdCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgc2l6ZV90
IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAogICAgIG1fcHJvcGVydHlUYWJsZS0+cmVt
b3ZlKHBvc2l0aW9uKTsKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zm
c2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShy
ZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lKTsKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAt
MTAzLDMyICsxMDMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNGcm96ZW4o
SlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1
cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAgICAgYm9vbCBkaWRUcmFuc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9Ci0gICAgICAgIGJvb2wgcHV0V2lsbEdy
b3dQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICBib29sIHB1dFdpbGxHcm93T3V0T2ZMaW5lU3Rv
cmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID49IHByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQob3V0
T2ZMaW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXplKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSk7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gY3VycmVudFNp
emUpOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gbnVt
YmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gb3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwor
ICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRh
YmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlU
YWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZS0+c2l6ZSgpID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAg
ICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNp
emUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gdG90
YWxTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3Qgc3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpOyAKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0
eSgpOyAKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24u
ICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRo
aXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0K
QEAgLTE0OSwxOCArMTQ5LDExNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJl
Q2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgU3Ry
dWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorICAgICAgICBTdHJ1
Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgcmV0dXJu
IG1fcHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAgICAgICAgYm9vbCB0cmFuc2l0aXZlbHlU
cmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKIAotICAgICAgICB2
b2lkIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICB1bnNpZ25lZCBwcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAg
ICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3BlcnR5VGFibGUg
PyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAgICBzaXplX3QgaW5saW5lU3RvcmFnZUNh
cGFjaXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKLQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0g
ICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7Cisg
ICAgICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIHVuc2lnbmVkIG91
dE9mTGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBt
X291dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAg
ICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxT
aXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAg
ICAgICAgaWYgKHRvdGFsU2l6ZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdl
Q2FwYWNpdHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0
KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9y
S25vd25Ob25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX3R5cGVJbmZvLnR5cGUoKSAhPSBGaW5hbE9iamVjdFR5cGUpOworICAgICAgICAgICAgaWYg
KG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxl
LT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZPdXRP
ZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAgICAgIHVu
c2lnbmVkIG91dE9mTGluZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAgICAgaWYg
KG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9
IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gdGhpcy0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICAg
ICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxp
bmVDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZk91
dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAg
Ym9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZTsKKyAgICAgICAgfQorICAg
ICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAg
ICAgIHVuc2lnbmVkIGlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0
VHlwZSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQ7CisgICAgICAgICAgICBpZiAobV9w
cm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVydHlUYWJsZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3duRmluYWxPYmpl
Y3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Cisg
ICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1f
dHlwZUluZm8udHlwZSgpKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3Jh
Z2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXRP
ZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBmaXJzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgIH0KKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IHNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZSArPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNpemUgLSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
OworICAgICAgICB9CisgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgPj0gZmly
c3RWYWxpZE9mZnNldCgpCisgICAgICAgICAgICAgICAgJiYgb2Zmc2V0IDw9IGxhc3RWYWxpZE9m
ZnNldCgpOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQm
IGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsyNzMsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxlUHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7IH0KICAgICAg
ICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJs
ZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0K
KyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxl
LT5pc0VtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9mZnNldChtX29m
ZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Bl
Y2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwogICAg
ICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CkBA
IC0yNzMsOCArMzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGljdGlvbmFyeUtp
bmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVf
dCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJlbW92
ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5
TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3Vu
dCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMwMSw3ICs0MDIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlv
bnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0
cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbV9v
ZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAgICAgcmV0dXJu
IG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwgU3RydWN0dXJl
Q2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICs0MTEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4VHJhbnNpdGlv
bkxlbmd0aCA9IDY0OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZzZXQgPSAtMTsK
LQogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50ID0gMzsKIAogICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAtMzM2LDEwICs0
MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBtdXRhYmxlIElubGlu
ZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKIAotICAgICAgICB1aW50
MzJfdCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OworICAgICAgICB1aW50MzJfdCBtX291dE9m
TGluZUNhcGFjaXR5OwogCiAgICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFjY291bnQgZm9y
IGFub255bW91cyBzbG90cwotICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG1fb2Zmc2V0OwogCiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFyeUtpbmQgOiAy
OwogICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAgLTM1MywyNiAr
NDUyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0
aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAg
aW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3Bl
cnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1
cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1f
cHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwotICAgICAgICBy
ZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBl
bnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAotICAgIGlubGlu
ZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBV
U3RyaW5nJiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgICAg
ICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgICAg
IGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAg
ICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVydHlNYXBFbnRy
eSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5m
aXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5vdEZvdW5kOwor
ICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAg
ICB9CiAgICAgCiAgICAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJlT3JVbmRlZmlu
ZWQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150851</attachid>
            <date>2012-07-04 16:34:26 -0700</date>
            <delta_ts>2012-07-04 19:12:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_21.diff</filename>
            <type>text/plain</type>
            <size>263888</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDkgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFW
MTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBB
QUhAWgorICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVj
dHVyZUBKU0NAQFNBUEFWMTJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBBQUhA
WgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2Fk
ZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTbG93
Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBA
V1RGQEBQQVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3RhdGlj
R2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9AMTJA
SEBaCkBAIC0xOTIsNyArMTkyLDYgQEAgRVhQT1JUUwogICAgID9mcm9tQElkZW50aWZpZXJASlND
QEBTQT9BVjEyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQcm9wZXJ0
eVNsb3RASlNDQEBBQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/ZnVuY3Rp
b25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEJWVVN0cmluZ0AyQFhaCi0gICAgP2dl
dEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAVlByb3BlcnR5TmFtZUAyQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q2FsbGFibGVPYmplY3RTbG93QEpTQ0BAWUFQQVZKU0NlbGxAMUBQQVYyMUBAWgpA
QCAtMjExLDExICsyMTAsMTIgQEAgRVhQT1JUUwogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJl
dGVyQEpTQ0BAU0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlND
QEAkMEFAQFdURkBAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKKyAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAg
ID9nZXR0ZXJAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAg
P2dsb2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgogICAg
ID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCisgICAgP2dyb3dPdXRPZkxpbmVT
dG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFUEFWPyRXcml0ZUJhcnJpZXJCYXNlQFc0VW5rbm93bkBK
U0NAQEAyQEFBVkpTR2xvYmFsRGF0YUAyQElJQFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBB
QUVYWFoKLSAgICA/Z3Jvd1Byb3BlcnR5U3RvcmFnZUBKU09iamVjdEBKU0NAQFFBRVBBVj8kV3Jp
dGVCYXJyaWVyQmFzZUBXNFVua25vd25ASlNDQEBAMkBBQVZKU0dsb2JhbERhdGFAMkBJSUBaCiAg
ICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZK
U1ZhbHVlQDJAMkBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBJQFoKICAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNT
dGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBAWgpAQCAtMzI4LDcgKzMyOCw3IEBAIEVYUE9SVFMKICAg
ICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmls
ZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2Ft
cGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBs
QFVTdHJpbmdASlNDQEBRQkU/QVYxMkBJSUBaCi0gICAgP3N1Z2dlc3RlZE5ld1Byb3BlcnR5U3Rv
cmFnZVNpemVAU3RydWN0dXJlQEpTQ0BAUUFFSVhaCisgICAgP3N1Z2dlc3RlZE5ld091dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFw
QEpTQ0BAUUFFUEFWSW5jcmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3Rv
dHlwZUBKU1ZhbHVlQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAg
ID90aGlzT2JqZWN0QERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBYWgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk0LDYgKzEwOTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxQcm9wZXJ0eU9mZnNl
dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXFByb3BlcnR5U2xvdC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQy
NzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZFMTU5Mjc1RDIwMDRD
QjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZGNDI3NzIxNTkyNzVE
ODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1
QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZG
RkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBE
RkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGlz
YXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVH
bG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1
OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdD
RkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNyw2ICsyMTA5LDcg
QEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJ
CQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywK
IAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywK
KwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLywKIAkJ
CQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKIAkJCQk2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8sCiAJCQkJNjVDMDJG
QkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEsNiArMjgxNCw3IEBA
CiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQ
cm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJfaW1t
X1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1aW50OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNElt
bTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBB
Uk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIzLDQ2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkp
OworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGlu
c3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAg
ICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFdICYgMHhGMDAwKSk7
CisgICAgICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAgcHRyWzBdIHw9IE9Q
X0xEUl9pbW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4MEYwMCkgPDwg
NDsKKyAgICAgICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAg
ICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6
CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAgICAgICAgICAgIHB0
clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQUREX2ltbV9UMzsKKyAg
ICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0OworICAgICAgICAgICAg
cHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0FE
RF9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2go
cHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdP
ZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1
LDYgKzI5NSwzNiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgbV9sYWJlbDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxlTG9hZExhYmVsOgor
ICAgIC8vCisgICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRzIGEgbG9hZFB0ciBp
bnN0cnVjdGlvbiB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgorICAgIC8vIHNvIHRo
YXQ6CisgICAgLy8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIpCisgICAgLy8KKyAg
ICAvLyBiZWNvbWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJbW1QdHIoaSksIGEs
IGIpCisgICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAg
ICAgCisgICAgcHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCgpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwoQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAgICAgICAgICAgIDog
bV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQXNzZW1i
bGVyTGFiZWwgbV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVsUHRyOgogICAgIC8v
CkBAIC01NjIsNiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBt
X2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
CisgICAgeworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAg
ICBMYWJlbCBsYWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3RlZDoKICAgICB7CiAg
ICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0
YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExv
YWQoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkp
OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsOwogY2xh
c3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFM
YWJlbDMyOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xhc3MgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0eXBlcyBhcmUgYWxs
IHByZXR0eSBtdWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBDb2RlUHRyIChvciBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFtZSkuICBUaGVzZQpA
QCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRh
dGFMYWJlbFB0ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJl
bDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KGludCBv
ZmZzZXQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9uKCkKQEAgLTE0Niw2
ICsxNDgsMTUgQEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CitwdWJsaWM6CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKKyAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4cGxpY2l0IENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAgICAgOiBDb2RlTG9j
YXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkgeyB9Cit9OworCiBp
bmxpbmUgQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVj
dGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VU
KG9mZnNldCk7CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOwogfQogCitp
bmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29u
dmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NFUlRfVkFMSURfQ09E
RV9PRkZTRVQob2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2Fk
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5rQnVmZmVyOjpDb2Rl
UmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygiICAgIENvZGUgYXQg
WyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNp
emUoKSk7CiAgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2RlKCksIG1fc2l6ZSwg
IiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIgICAgICAgIDxubyBk
aXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRp
c2Fzc2VtYmx5IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTGlua0J1ZmZlciB7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxD
b21wYWN0OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJl
bDMyOwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQ
dHI7CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29u
dmVydGlibGVMb2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpAQCAtMTgwLDYgKzE4
MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21w
YWN0KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQo
bGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxv
YWQgbG9jYXRpb25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXI6OmdldExp
bmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOworICAgIH0K
KwogICAgIC8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBj
YWxsLCBnaXZlbiBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgY29k
ZS4KICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2FsbCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNjAwLDYgKzYwMCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQorICAg
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49MCAmJiBh
ZGRyZXNzLm9mZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJXaWRlOEJpdElt
bWVkaWF0ZShkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAgQ29udmVydGlibGVM
b2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVy
dGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoYWRkcmVz
cy5tX3B0ciwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9t
cihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
MiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9s
aW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aExvYWQobGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJl
bCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZlKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
bGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2Fk
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAgICAgICBw
dHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2FzZSBPUF9N
T1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAg
ICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFi
ZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJn
ZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lk
X3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWlu
OgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTog
ewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAg
ICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpA
QCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAg
ICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQo
KSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
N10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lm
aWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2Us
IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgs
NyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAg
ICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAg
ICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVk
LCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQor
ICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAg
LTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAh
PSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQp
KSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBu
b3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAg
ICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAgICAg
UHJvcGVydHlPZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobXlPZmZzZXQg
PT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChteU9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3VuZDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICByZXN1bHQubV9z
dHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIy
MywxMSArMjIzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpOworICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQocmVzdWx0
Lm1fb2Zmc2V0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5t
X29mZnNldCkpIHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Nsb3dQYXRoOwogICAg
ICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKICAgICAgICAgcmVzdWx0Lm1fY2hh
aW4uY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBHZXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgR2V0QnlJZFN0YXR1c19oCiAKKyNp
bmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCkBAIC00NiwxMyArNDcsMTMgQEAgcHVibGljOgogCiAg
ICAgR2V0QnlJZFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQotICAg
ICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZz
ZXQpCiAgICAgewogICAgIH0KICAgICAKICAgICBHZXRCeUlkU3RhdHVzKAogICAgICAgICBTdGF0
ZSBzdGF0ZSwgYm9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0ID0gU3RydWN0dXJlU2V0KCksCi0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwg
SlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4gY2hh
aW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IGludmFs
aWRPZmZzZXQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVj
dHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCiAgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwg
bV9jaGFpbihjaGFpbikKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0K
ICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFpbjsgfSAvLyBSZXR1cm5zIGVtcHR5IHZlY3RvciBpZiB0aGlzIGlzIGEgZGlyZWN0IGFjY2Vz
cy4KICAgICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmlj
VmFsdWU7IH0gLy8gUmV0dXJucyBKU1ZhbHVlKCkgaWYgdGhlcmUgaXMgbm8gc3BlY2lmaWMgdmFs
dWUuCi0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAK
ICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9
CiAgICAgCkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlU2V0IG1fc3Ry
dWN0dXJlU2V0OwogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBtX2NoYWluOwogICAgIEpTVmFsdWUg
bV9zcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBtX29mZnNldDsKICAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDgsNiArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVf
d2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8o
b3BfcmVzb2x2ZV93aXRoX3RoaXMsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYnlfaWQsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAor
ICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIC8qIGhhcyB2YWx1ZSBw
cm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfc2VsZiwgOSkgLyogaGFz
IHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9wcm90bywg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9p
ZF9jaGFpbiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkBAIC0xMjIsOSArMTIzLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc3RyaW5nX2xlbmd0aCwg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1
bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAorICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTIx
ODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTEgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbQogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCi0g
ICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgewot
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQotICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWQKKyAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0
X2J5X2lkX291dF9vZl9saW5lKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAg
CiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwg
MCwgMCwgb2Zmc2V0KTsKICAgICB9CkBAIC01NiwxNiArNTcsMTggQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAogICAgIEFTU0VSVChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QKLSAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsCisgICAg
ICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZQorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmUpOwogICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1
Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKICAgICBBU1NFUlQobmV3U3RydWN0dXJl
KTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1
Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgaWYg
KG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsK
KyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgCiAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGNoYWluLCBvZmZzZXQpOwogI2Vsc2UKQEAgLTk0LDI0ICs5NywyNCBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAg
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0
KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBs
YWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkg
eworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBsYWNlLAogICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKSwKICAgICAgICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAgICAgIG9mZnNldCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKICAgICAgICAgQVNTRVJUKHN0dWJJbmZvLnUucHV0
QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8u
dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgK
ICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAg
ICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAg
ICAgICBTaW1wbGVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJ
ZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCkBAIC0xMTksMTQgKzEyMiwxNCBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSwKICAgICAgICAgICAg
ICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAg
ICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICNlbHNlIC8v
IEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQdXRC
eUlkU3RhdHVzX2gKICNkZWZpbmUgUHV0QnlJZFN0YXR1c19oCiAKKyNpbmNsdWRlICJQcm9wZXJ0
eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKDApCiAg
ICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoYWluKDAp
Ci0gICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxp
ZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluLAotICAgICAg
ICBzaXplX3Qgb2Zmc2V0KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUp
CiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQpAQCAtNzQsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gIW1fb2xkU3RydWN0dXJlKTsKICAgICAgICAgQVNT
RVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX25ld1N0cnVjdHVyZSk7CiAg
ICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9zdHJ1Y3R1
cmVDaGFpbik7Ci0gICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IG5vdEZvdW5kKSk7CisgICAg
ICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNT
bG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpKTsKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJl
OyB9CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0
cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RydWN0dXJlQ2hhaW47IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBt
X29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwogICAgIFN0cnVj
dHVyZUNoYWluKiBtX3N0cnVjdHVyZUNoYWluOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNyAr
MzIsMTkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBFTkFCTEUoTExJTlQpIHx8IEVOQUJM
RShKSVQpCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yU3RydWN0dXJlKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmllciYgaWRl
bnRpZmllcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwq
IHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAqY29kZUJs
b2NrLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cygpOwogICAg
IAogICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKFJlc29sdmVHbG9iYWxTdGF0dXM6OlNp
bXBsZSwgc3RydWN0dXJlLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogfQorI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkgfHwgRU5BQkxFKEpJVCkKIAogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMg
Y29tcHV0ZUZvckxMSW50KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAx
MjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFJlc29sdmVH
bG9iYWxTdGF0dXNfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDYsMTIgKzQ3LDEyIEBAIHB1YmxpYzoKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKCkKICAg
ICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmUoMCkK
LSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAg
ICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNl
dCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBj
bGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2lu
Z0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNl
dCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3Ry
dWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBz
Y3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAg
ICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAg
ICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50
MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFD
aGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
c3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1
Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxv
YWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
ZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxG
dW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
ICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYp
OwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJ
bmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5l
U3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAg
ICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0Owot
ICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNp
emVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNl
dE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAg
IH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0g
ICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAg
ICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0
YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7
Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0Owor
ICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0
KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nl
c3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVj
dHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0
dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAg
IGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1
cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmds
ZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBA
IC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsK
ICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9i
amVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3Rv
cmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNl
dCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAg
IC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFz
ZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9u
ZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVz
dGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJ
bmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAg
ZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFy
ZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUu
b3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAor
ICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVj
dGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAg
LTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xvdCksIGdl
dFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogewor
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0
X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9k
ZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0y
MjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBOb2RlSW5k
ZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsK
QEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJ
ZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7
Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPmlzVXNp
bmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
cHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3Rv
cmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVj
dCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNl
dE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwg
YmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9wSW5mbyht
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdlLCBiYXNl
LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vz
c0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0Rh
dGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNl
KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAgICAgICAg
ICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRT
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVj
dHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0
cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly
ZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3Rh
dHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYg
KHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQo
KSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09i
amVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSks
CkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNl
dCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9m
ZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZp
ZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFw
cGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjczOCw4
ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5T2Zm
c2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFn
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBp
bmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFy
OgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6
CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0
b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0g
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZn
LmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vz
c2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBz
dHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0
b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVj
dCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9h
ZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3Rv
cmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2Fk
T3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApA
QCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAg
IDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3Ry
dWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3JlKQogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q29u
dmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JTdG9yZTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVw
YXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBG
dW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3Qp
CiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUy
LDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAK
ICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9h
ZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZElu
c3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxl
TG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAo
Y29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JT
dG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAgICBlbHNl
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2Fk
T3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0
aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZz
ZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
OwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9h
ZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRM
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2
ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcg
KzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBs
aW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNj
ZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJl
bEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9u
TGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkK
K3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNl
TGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsx
NDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAg
ICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0Lmxv
YWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIp
OworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBv
ZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYK
KyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJl
c3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTI1Myw3
ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
aWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFz
ZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAo
IWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksMTIgKzM2MCwyMCBAQCBzdGF0
aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICB8fCBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CiAgICAgICAg
ICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRl
cikgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwotICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkg
ewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFz
ZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlv
bkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg1LDEzICs0MDQsMjcgQEAg
c3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgaGFu
ZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0dWJKaXQuanVtcChHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BS
KTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9C
YXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7CisgICAgICAgICAgICAgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BS
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAg
ICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKICAgICAg
ICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDUwLDcgKzQ4Myw3IEBAIHN0
YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGUKICAgICAKICAgICBBU1NFUlQo
c2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
ZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
ICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjcsNyArNjAwLDcg
QEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3JvQXNzZW1i
bGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAm
JiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJy
aWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewog
ICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFz
ZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAg
ICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNjE5LDIwIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAg
ICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNh
Y2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwor
ICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldElu
SW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkp
OworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNl
bmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5z
aXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3Ry
dWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBl
bHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
c3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICAK
QEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRl
KiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MK
LSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
IT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAgICAgaWYg
KG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkBA
IC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3Rh
dAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0g
ICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0x
KSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBh
eWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5
bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRh
Z0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRj
aChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9q
aXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApAQCAtNTUwLDcg
KzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9
CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVj
b3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdMb2FkV2l0
aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwK
ICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxp
bnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3Vs
dFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTY1LDcgKzU2
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdy
aXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJh
cnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGlibGVMb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAg
SklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0
b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0
eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2Rl
T3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHRh
Z1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAg
c2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQ
UiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTEsOCArMzg5
MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RNYXRjaCA9IG1faml0LmJyYW5jaFB0cihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAg
ICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZl
SW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NF
UlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNo
MzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0
ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVz
b2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCBy
ZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNyArNDk3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAg
ICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgSklUQ29t
cGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQorICAgICAg
ICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBK
SVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0
cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVM
YWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcsOCArNTE4LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFj
Y2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3Jp
Z2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBz
bG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90Pihi
YXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9y
aWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdl
TG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFi
ZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BS
KSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAg
ICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0
ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzYsNyArNTM3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJv
cGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSks
IHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdp
dGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCiAgICAgSklUQ29tcGlsZXI6
OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01NjYsNyArNTY4LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAog
ICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1f
aml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxD
b21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVs
LCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3BlcnR5QWNj
ZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxv
YWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQ
YXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNh
ZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
ICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAg
ICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJl
YWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNo
ID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2
ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21w
aWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkK
KyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZElt
bTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7
CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIs
IEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKEpTVmFsdWUpKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhl
cml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3Qn
cyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0YWJs
ZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlvdSdy
ZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChj
ZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcg
KzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAg
ICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1
MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUs
IGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAg
aWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dl
bmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dp
dGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5F
X09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9n
ZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5
KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYgKzM1
MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6
CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09QQ09E
RShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlf
aWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIp
IG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICszNTY3
LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3Ry
dWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAg
ICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAg
aW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2
UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZz
ZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0z
NjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIEFT
U0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVl
ID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2
UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2Jq
ZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkp
OwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNW
YWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgp
OwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vi
c2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgs
IG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNW
YWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAg
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVG
SU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
OgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpA
QCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGlu
ZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0
dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRp
b24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5w
YXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0Y2gu
YmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51Lmdl
dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3Bl
cnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1dEJ5
SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFz
ZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5l
LnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNrOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBnZXREaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4
NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9U
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJl
Z2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVU
b0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
cHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
ZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNw
bGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNl
bWVudExhYmVsMiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExh
YmVsMiwKICNlbmRpZgorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3Vs
dCkKICAgICAgICAgICAgIDogbV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhC
ZWdpbikKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29t
cGFyZSkKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNw
bGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29t
cGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVy
dHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAgKQog
ICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2lu
KQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQp
CiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUp
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFiZWwo
ZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29t
cGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGpp
dChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZz
ZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9y
cGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5
bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0
ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBp
bGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVu
dEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2Fs
bEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENo
YWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNp
emVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0
Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAg
IGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50
LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVj
b2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50
LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAg
ICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1f
Ynl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0
QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZv
Kik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2Rl
YmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRC
eUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9i
YWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFk
ZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVD
b21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVm
Zm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwot
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVj
dHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1
cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1
Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1
Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3Qp
OwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNv
bXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVj
dHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9i
YWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9
CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtu
b3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1
bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsK
ICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQg
YmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAg
ICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQp
OwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNl
dCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAg
ICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRkMzJD
b25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1
bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZp
ZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVn
LCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQg
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJl
Z2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1l
dGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0
b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9y
YWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBzdG9y
YWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENs
YXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAgICAg
ICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAvLyBW
ZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBy
ZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBz
dHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1f
cHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgT0JK
RUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAgIGxv
YWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwogICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVOR1RI
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2ds
b2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBMb2Fk
IGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFs
d2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1Qw
KTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29s
dmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1QwLCBy
ZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdU
MCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2lu
ZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVy
cHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChv
cF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBt
X2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29tcGls
ZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAg
ICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7Cisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxl
TG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBs
b2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hH
ZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbENv
bXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNl
dFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7
IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJ
ZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNl
R2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5h
cHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1f
Ynl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3Vs
dCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3Bl
cnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBw
dXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJ
bnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkp
KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMy
IGRpc3BsYWNlbWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdU
MiwgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2Fk
CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVz
c09mZnNldFBhdGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zm
c2V0KSk7IC8vIHRhZwogICAgIApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJl
Z1QyLCByZWdUMSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8u
YXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBt
X2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxh
Y2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNz
Q29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVy
dHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxh
Y2VtZW50TGFiZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTQzMCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVU
YWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBl
bWl0U3RvcmUob2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAo
aXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IGVtaXRTdG9yZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2
YWx1ZVBheWxvYWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGlu
ZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVU
b0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQ
YXlsb2FkOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCBy
ZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhS
ZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRl
bXApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNz
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1
bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7
Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkg
eworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRh
ZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5
bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgp
LCByZXN1bHRUYWcpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBh
c3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250
YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShN
SVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9jYXRl
IHByb3BlcnR5IHN0b3JhZ2UgaWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAgICBi
b29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYg
KHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5lIHdh
cyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFnYWlu
IHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRo
ZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVkLgpA
QCAtNDk5LDcgKzUxMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAgc3R1
YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1
bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cihu
ZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3
ICs1NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBh
dGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0
byBKSVRTdHViczo6Y3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFu
eXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0Nh
bGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9p
ZF9zZWxmX2ZhaWwpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICog
Y2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2Vy
dHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9y
LgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVU
b0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwg
b2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcK
KyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNo
ZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsg
Ly8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNh
Y2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8v
IHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVC
bG9jayk7CiAgICAgCkBAIC01NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlk
UmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9w
dXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyBy
aWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dl
bmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0
ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9m
ZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUg
U3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxv
YWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1l
bnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUo
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+
aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90
UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
cHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAv
LyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0
X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03
MDAsNyArNzEwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgog
fQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEg
SlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3Ry
dWN0dXJlKTsKQEAgLTc2MCw3ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2Rl
TG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1
cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4MzksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5j
b2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdU
MCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNv
ZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQo
Y291bnQpOwpAQCAtOTc1LDEzICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihy
ZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsK
IH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0
ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAgQVNT
RVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBsb2Fk
UHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQdHIo
QmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1vZGUg
PT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1Ro
YW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxp
bmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAgICBs
b2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNlSW5k
ZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVzc0Zv
cihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3Rz
KSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1p
dFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
SW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9i
amVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoc2Ny
YXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVvZihK
U1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmlu
YWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmso
dGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0KKyAg
ICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3Rv
cmFnZUNhcGFjaXR5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoSlNWYWx1ZSkpKSwg
cmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNr
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQg
dGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5H
VEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFT
U0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BD
T0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAor
ICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9u
ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZSk7CiAKICAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spOwogICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMzczLDE0ICszOTAsMTQgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0
dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRy
dXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0
cnVjdHVyZSkpKTsKICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVnVDApOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBj
b252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZM
aW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50
TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdU
MCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJl
c3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0
QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBl
bmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0
ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9w
ZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNl
bWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0ICs0NTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJl
LCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1
bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQ
YXRjaChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwog
CiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAg
IGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRl
ckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9u
SW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5
QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8o
UHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAg
LTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1
Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAvLyB2YWx1ZSBpbiBvYmplY3RSZWcuCi12b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUs
IHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIG9mZnNl
dCkpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIHN0
b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZz
ZXQpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2Fk
IGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4K
LXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldCAqIHNp
emVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1
bHQsIG9mZnNldCksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNl
dCkpIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShj
YWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBzaXplb2YoSlNWYWx1
ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7CiB9
CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdp
c3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVy
dHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgY2FjaGVk
T2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHQpOworICAgIGlm
IChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoYmFzZS0+
bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3Jh
Z2UoKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
b24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkK
K3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBK
dW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0
aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAtNTIyLDcgKzU1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAgIAogICAgIC8vIGVtaXQgYSBjYWxs
IG9ubHkgaWYgc3RvcmFnZSByZWFsbG9jIGlzIG5lZWRlZAotICAgIGJvb2wgd2lsbE5lZWRTdG9y
YWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBu
ZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVl
ZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5l
d1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdl
UmVhbGxvYykgewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtl
IGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAg
ICAgICAvLyByZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2
ZW50IHRoZSBzdGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWduZWQuCkBAIC01MzIsNyArNTYyLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHVi
Q2FsbC5za2lwQXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1l
bnQoKTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVl
Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwog
ICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJBcmco
MiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYwMiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGlu
ZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUu
Y29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2
b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVw
YXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTU4MCwxNCArNjEwLDEz
IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91
bGQgcHJvYmFibHkgZ28gdG8gY3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0
IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJl
bGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dl
dF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkg
KiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3Bv
ZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBm
b3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0
YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVy
ZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRj
aEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2lu
LmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5w
cm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7Cisg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1l
bnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsK
IH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJl
Y3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2sp
OwogCkBAIC01OTUsMTEgKzYyNCwxMCBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShD
b2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRf
ZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3Ms
IEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBj
dGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNW
YWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhl
IHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8g
bG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0
cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0
Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQu
cHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOwor
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExh
YmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQog
CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJU
b0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJy
YXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYg
dGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJl
IHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdz
IHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3
ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVn
VDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAs
NyArNzk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3Rv
dHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENv
ZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJl
bmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQn
cyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04MzksNyArODY3LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90
b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1w
TGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcgKzk0Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NCw3ICs5NTQsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCks
IHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9nZW5lcmljOwpAQCAtMTQ4NiwxMyAr
MTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIGlu
dDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigpOwogICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gc3RhY2tGcmFtZS5hcmdzWzRdLnN0cnVjdHVyZSgpOwotICAgIGlu
dDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
KyAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7
CisgICAgCisgICAgQVNTRVJUKG9sZFNpemUgPj0gMCk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBv
bGRTaXplKTsKIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmpl
Y3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9ICpzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0
b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5l
d1NpemUpOwotICAgIGJhc2UtPnNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFz
ZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7Cisg
ICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdT
dHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC0xODE0LDcgKzE4MTcsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKHNsb3Qu
c2xvdEJhc2UoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3QgPSBh
c09iamVjdChzbG90LnNsb3RCYXNlKCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAKICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkKICAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQURE
UkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19mYWlsKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlf
aWQpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtOTQwLDcgKzk0Niw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAg
ICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0
aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyArOTU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xv
dC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNo
YWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAg
ICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVy
YW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkKTsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC05MTksNiArOTE5LDI0IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlz
cGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RG
aW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAg
IGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNh
cGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtv
YmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxvYWRpIFRhZ09mZnNldCAt
IDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZz
ZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VD
YXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2Vu
ZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBv
YmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwg
SW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9v
dXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAg
am1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVT
dG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJl
YWR5OgorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2Jq
ZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9w
ZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUs
IHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtOTMwLDkgKzk0OCw3IEBAIG1hY3JvIHJlc29sdmVH
bG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
ICAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0
MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwg
dDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0x
MDg3LDMxICsxMTAzLDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBk
aXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21v
cnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhl
CisjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdl
IGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0
IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2Ug
ZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3
aGljaCBpcyB3aGF0CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3Jv
IGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAj
IFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdl
IGRvIG5vdCBtb2RpZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBm
b3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGlu
Zy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lk
IHdpbGwgY29udGludWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUu
IEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3Vs
ZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRp
IDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBK
U09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Qw
LCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0g
ICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9w
ZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHBy
b3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0
MQorICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3Jh
dGNoCisgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJd
LCB0MgorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAg
ICAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwg
dDIsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorCisgICAgLm9w
R2V0QnlJZFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9i
eV9pZCkKKyAgICAgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgor
ICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9m
TGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEz
MCw2OCArMTE1OSw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlz
cGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9w
ZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0Mwog
ICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQ
Q10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3
cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAg
Z2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1h
Y3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAy
MFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2Ny
YXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAg
ICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAg
ICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAg
ICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0
X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNw
YXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitf
bGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGlu
ZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywg
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BD
XSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10s
IHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRp
dGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQx
LCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQx
Ci0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFn
ZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9y
YWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0Mwor
ICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAg
ICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2Vu
ZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5k
CisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAg
ICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6
CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0Nl
bGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9u
ZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9y
YWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZM
aW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgot
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3Jh
dGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
IyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAg
ICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3Ry
dWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywg
LmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAg
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0g
ICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAg
ICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5k
b25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5D
aGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJl
Q2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlf
dmFsOgpAQCAtMTI2MSw5ICsxMzE4LDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBs
b2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgotICAg
IGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0
QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MCwgdDIsIHQx
LCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4
LDIyIEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwg
b2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHBy
b3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRT
dG9yYWdlCisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKK21hY3JvIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVl
KQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5s
aW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9y
YWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBh
ZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0
eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2FkcCAtOCAqIElubGluZVN0
b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHZhbHVl
CitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMg
YXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCkBAIC03ODksOCArODA1LDcgQEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93
KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAy
NFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQx
LCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAg
ICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQog
ICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQwCkBAIC05MzcsNyArOTUyLDcg
QEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAot
X2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5
X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCiAgICAgIyBvcGNv
ZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1l
IGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NjMsMzAgQEAgX2xsaW50X29wX2dldF9ieV9p
ZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0s
IHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQyXSwgdDMKLSAgICBzdG9yZXAg
dDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCi0gICAgdmFsdWVQ
cm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
KyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAg
ICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAg
ICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZHAgNjRbUEIs
IFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MSkKKyAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAgICAgICAgIAorICAgIC5vcEdl
dEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
aWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAg
ICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxp
bmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2
NSArMTAwNSw5MyBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0
Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0s
IHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhd
LCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxv
YWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQw
KQotICAgIHdyaXRlQmFycmllcih0MCkKLSAgICBzdG9yZXAgdDAsIFt0MywgdDFdCi0gICAgZGlz
cGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0
MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAg
ICAgICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKKyAg
ICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lk
OgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5
KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRf
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3Jh
Z2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJv
cGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBD
LCA4XSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAg
IGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQot
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0
MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKLSAgICB3cml0ZUJhcnJp
ZXIodDEpCi0gICAgc3RvcmVwIHQxLCBbdDNdCi0gICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEK
LSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkK
KyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAg
ICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEs
IHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQorICAgICAgICAgICAgc3RvcmVw
IHQxLCBbdDNdCisgICAgICAgICAgICBsb2FkcCA0OFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAg
ICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0
Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xk
U3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAg
ICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAg
bG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56
IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2Ny
YXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVl
TnVsbCwgLmRvbmUKKy5sb29wOgorICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90
b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDgsIHNjcmF0Y2gKKyAgICBicG5lcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKKy5kb25lOgogZW5k
CiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRy
YW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9y
YWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0
QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNs
b3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVz
aW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAgICAg
bG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChv
aykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8g
KG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBicGVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQotICAgICAgICAubG9v
cDoKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJl
XSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3Rv
Q2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgOCwgc2NyYXRjaAotICAgICAgICAgICAgYnBu
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29w
Ci0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3Ry
dWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEwNiw4ICsxMTYxLDggQEAgX2xsaW50X29wX2dldF9ieV9w
bmFtZToKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwogICAgIHN1Ymkg
MSwgdDMKICAgICBiaWFlcSB0MywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFi
bGVTbG90c1t0MV0sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQzLCA4XSwgdDAKKyAgICBhZGRp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0MV0sIHQzCisgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQwKQogICAgIGxvYWRpcyA4W1BCLCBQQywg
OF0sIHQxCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCg3KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBA
QCBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhCiAjIFN0cmluZyBmbGFn
cy4KIGNvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAogCisjIFByb3BlcnR5IHN0b3JhZ2Ug
Y29uc3RhbnRzCitpZiBKU1ZBTFVFNjQKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
PSA0CitlbHNlCisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gNgorZW5kCisKICMg
QWxsb2NhdGlvbiBjb25zdGFudHMKIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCA9IDEKQEAgLTMxMiw4ICszMTksNyBAQCBtYWNybyBhbGxvY2F0ZUJh
c2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3Vs
dF0KICAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRd
CiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAg
ICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN0b3Jl
cCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAg
c3RvcmVwIDAsIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XQogICAgIGVuZAog
ZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEgQEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgog
ICAgIGRpc3BhdGNoKDUpCiAKIAorbWFjcm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVj
dCBpcyB0aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCisgICAgIyBwcm9wZXJ0eSBz
dG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFjcm8gd2l0aE91dE9mTGluZVN0b3JhZ2Uob2JqZWN0LCBw
cm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRP
ZkxpbmVTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhh
dCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBw
cm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVz
ZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisg
ICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKKwogX2xsaW50
X29wX2RlbF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfZGVsX2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5k
KQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVy
YW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9u
CiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
UmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBv
cGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRk
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0K
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9w
ZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMy
LDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKLSAgICAgICAgc2l6ZV90IG1fZnVuY3Rpb25O
YW1lT2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmU7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAg
ICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIHNpemVfdCBmdW5jdGlvbk5h
bWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQorICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uTmFtZU9mZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogaW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9p
ZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0
aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAg
ICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGlu
ZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBl
eHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhv
c2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0
ZW1wID0gc3RvcmFnZTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAg
ICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAg
ICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJy
aWVyOjpVbmNoZWNrZWQpOworICAgIH0KKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRv
cklEKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7
CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247Cisj
ZW5kaWYKK30KKwordm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
Ym9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3Jh
Z2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBz
dG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsK
KyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3Jh
Z2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qo
KTsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0Mn
cyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5u
ZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNp
dG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBz
dG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBw
ZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9y
YWdlU2l6ZSk7CiAgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+
KHRlbXApOwotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFn
ZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0
T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAg
ICAgfQogCiAgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9y
YWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCgpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0
b3JhZ2UoKSwgc3RvcmFnZVNpemUpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uOwogI2VuZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9
IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAh
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAyLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZQogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNw
ZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRl
ICYmICFleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CkBAIC0zOTQsNyArNDI0LDcgQEAgYm9vbCBK
U09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlYwogYm9vbCBKU09iamVjdDo6Z2V0UHJv
cGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKQor
ICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBz
dGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC01MTYsMjAgKzU0NiwyMCBAQCB2b2lk
IEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJl
bW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKSA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBzaXplX3Qgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBp
ZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5k
KQorICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90
Rm91bmQpCisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0
ZUluaGVyaXRvcklEKEoKICAgICByZXR1cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJv
cGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9y
YWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6
ZSA+IG9sZFNpemUpOwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9u
IG5vdCByZWx5IG9uIHN0cnVjdHVyZSgpLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRo
ZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9uLgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3Bl
cnR5U3RvcmFnZSA9IG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFn
ZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lu
bGluZVN0b3JhZ2UoKSkgeworICAgIGlmICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAg
IC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZv
ciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJz
LgogICAgICAgICB2b2lkKiB0ZW1wID0gbmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAo
IWdsb2JhbERhdGEuaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pICogbmV3U2l6ZSwgJnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0
ZW1wKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQot
ICAgICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ld
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUg
dG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJl
bmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVy
dHlTdG9yYWdlOwpAQCAtNTk0LDggKzYyMSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0Nl
bGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwot
ICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihv
YmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4g
dHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0
ZXIKICAgICB9OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZpbmUgSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNgotI2Vsc2UKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAotI2VuZGlmCi0KLUNPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSAwKSwgZmluYWxfc3RvcmFnZV9ub25fbmVn
YXRpdmUpOworICAgIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKU0NlbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVu
ZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRy
eSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtMTY5LDI2
ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAu
CiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9m
ZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkp
OworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0
T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAg
ewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KSA6IDA7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24o
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIGJvb2wg
aGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVT
dG9yYWdlKCk7IH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVu
c2FmZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBsb2NhdGlvbiAtIHByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAg
ICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhh
c0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2Fm
ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBv
dXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgp
OyB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4g
bV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0
b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZz
ZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5s
aW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFn
ZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCByZXN1bHQ7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0g
bG9jYXRpb24gLSBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0
SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNp
dHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9m
TGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgICAgICAgICAgdmFsaWRh
dGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlv
blRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25E
YXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBv
ZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBj
b25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAg
IHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9m
ZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9i
YWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5k
ZWZpbmVkKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQo
KTsgfQorICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9m
ZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZv
aWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAg
dm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9y
YWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAg
ICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBib29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpCi0gICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwot
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAg
IHZvaWQgc2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwg
U3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBn
cm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90
IG5ld1NpemUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
cmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRD
YXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0
eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2
b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZP
dXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3Bl
cnR5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0
b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3Rf
aW5saW5lU3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAg
ICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NF
UlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFw
KHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0
KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkg
d2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQg
dHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBK
U09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwog
ICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAt
MzA1LDE5ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9y
CiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAg
ICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlT
dG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgp
OyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25G
b3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRd
OwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBw
dXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3
LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xv
YmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOwor
ICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICsz
NzMsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBB
U1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07
CkBAIC0zODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
ICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0
Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VS
VCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6
ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFj
aXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlz
LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBA
IC00MDAsMTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAg
IAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFn
ZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZ
XTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkg
QEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5
NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0
dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0K
IAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8
fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2
b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlm
ICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAg
ICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3Rv
cmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9y
YWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxp
bmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2Jq
ZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9m
TGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEs
NiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJu
IGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVj
dHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZv
KCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0g
ICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFj
aXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGlu
Zm8pOwpAQCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFz
dEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFz
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVf
dCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJl
KCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAg
ICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAg
ICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgp
OwpAQCAtNjc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNG
dW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsK
KyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBl
aXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVu
dCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rp
b24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAt
NzAwLDEzICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0
V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93
UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgp
KTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdl
KCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3Bl
cnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAg
IHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkp
OwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29t
bWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmlj
RnVuY3Rpb24pCkBAIC03MTQsMTUgKzczMSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVf
dCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBz
aXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7
CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlm
IChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KQotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OwotCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3Rv
cmFnZSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBv
dXRPZkxpbmVTdG9yYWdlKCk7IAorICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93
T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lm
aWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2
ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJy
ZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAg
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJy
ZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewog
ICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwor
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3Ry
dWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpA
QCAtNzgxLDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKAogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENh
cGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNp
dHkgPD0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NF
UlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAg
ICAKLSAgICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3Ry
dWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3Jh
Z2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEs
IG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwot
ICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1
cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3Jh
Z2UoCisgICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3
U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0
cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRS
ZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAg
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVy
ZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMg
JiBBY2Nlc3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlT
dG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFn
ZSgpKQotICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1
Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlm
IChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1
LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdp
c3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYg
KzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAg
cmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hl
cmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoK
Ky8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9y
YWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhl
IG91dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5l
T2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICog
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zm
c2V0KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAg
cmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitp
bmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVt
Q2FjaGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1l
cmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwot
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5
TmFtZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlv
bihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2Fj
aGVhYmxlU2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
cHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAg
CkBAIC02MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wg
Z2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQo
c2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChpID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBt
X29mZnNldEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04
OCwxMiArODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVB
cnJheURhdGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9i
amVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5
TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAg
ICB1aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3Ry
aW5nc1NpemU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlw
ZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBqc0FkZFNsb3dDYXNlKGNh
bGxGcmFtZSwgdjEsIHYyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBzbG90T2Zm
c2V0KQorICAgIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgc2xvdE9mZnNldCkKICAgICB7CiAg
ICAgICAgIEpTQ2VsbCogY2VsbCA9IGJhc2UuYXNDZWxsKCk7CiAgICAgICAgIHNpemVfdCBjb3Vu
dCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgdW5zaWduZWQg
Y29tcHV0ZU51bWJlck9mR0NNYXJrZXJzCiAgICAgcmV0dXJuIGNwdXNUb1VzZTsKIH0KIAotCiBP
cHRpb25zOjpFbnRyeSBPcHRpb25zOjpzX29wdGlvbnNbT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25z
XTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6CkBAIC0x
MTksMTEgKzExOCwxMSBAQCBjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRp
CiB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogewogICAgIC8vIEluaXRpYWxpemUgZWFjaCBv
ZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBGT1JfRUFD
SF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfKSBcCisjZGVmaW5lIEZPUl9FQUNI
X09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8pICAgIFwKICAgICBuYW1lXygpID0g
ZGVmYXVsdFZhbHVlXzsKICAgICBKU0NfT1BUSU9OUyhGT1JfRUFDSF9PUFRJT04pCiAjdW5kZWYg
Rk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAgICAgCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFy
cyB0byBvdmVycmlkZSBvcHRpb25zIGlmIGFwcGxpY2FibGUuCiAgICAgLy8gVGhlIGV2biB2YXIg
c2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBvcHRpb24gcHJlZml4ZWQgd2l0aAogICAgIC8vICJK
U0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAg
ICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgIkpTQ18iICNuYW1lXyk7CiAg
ICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgot
ICAgIAogI2VuZGlmIC8vIFJVTl9USU1FX0hFVVJJU1RJQ1MKIAorI2lmIDAKKyAgICA7IC8vIERl
Y29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgorI2VuZGlmCisgICAgCiAg
ICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0
byB0aGUgb3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VS
VCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1p
emVTb29uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZp
bmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAtNzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBu
ZXh0UG93ZXJPZjIodW5zaWduZWQgdikKIAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAg
IFN0cmluZ0ltcGwqIGtleTsKLSAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpT
Q2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFBy
b3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBT
dHJpbmdJbXBsKiBrZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwg
b2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQs
OCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1
bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVs
ZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25l
ZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVk
IG9mZnNldCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlP
ZmZzZXQgbmV4dE9mZnNldChKU1R5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFi
bGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQu
CiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4g
PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1U
YWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4
ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0
aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFBy
b3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGlu
ZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVk
T2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQ
cm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsK
ICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zm
c2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zm
c2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAor
ICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAg
IEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNp
dHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9m
ZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAi
SlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFD
SVRZIDYKKyNlbHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgor
Cit0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zm
c2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25z
dCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBh
Y2l0eTsKKworLy8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVu
ZCB0byBkbyBmb3J3YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlP
ZmZzZXQpOworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7
CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCk7CitpbmxpbmUgdm9p
ZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBib29sIGlz
VmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zm
c2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJv
cGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUpOworCitpbmxpbmUgdm9pZCBjaGVj
a09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNl
dCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZv
aWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNT
RVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFs
aWRPZmZzZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAg
ICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlk
YXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZz
ZXQpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9p
ZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQo
b2Zmc2V0KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4g
b2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9m
TGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zm
c2V0KTsKKyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBz
aXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZz
ZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZz
ZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAg
cmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90
IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAg
IGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQp
OworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKwor
aW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7Cisg
ICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsg
MTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0
KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNl
dCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBlICYmIG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CisgICAg
cmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJzdFByb3Bl
cnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAgIHJldHVybiBuZXh0UHJvcGVydHlPZmZz
ZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4K
QEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhY2hlZFByb3BlcnR5
VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5
VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJs
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0K
LSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChp
c0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKQEAgLTEwNCw3ICsx
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNl
LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldFZhbHVlKEpT
VmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIG1fZ2V0VmFs
dWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2Us
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0
Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVu
YywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
Z2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01B
UktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2Ug
dGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAgICAgICAgICAgICAvLyAo
Rm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBi
ZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAg
ICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7
CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAg
ICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1
ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwogCi0gICAgICAgIHNpemVf
dCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIENh
Y2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVy
dHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3Bl
cnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4aXN0
aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICAgICAg
IG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBv
ZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gTmV3UHJv
cGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQsNyArNjQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0
KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAor
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzczLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2Jq
ZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZp
c2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhp
cywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFu
c2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAg
ICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQ
aW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVs
bCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNo
cG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBh
Y2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFy
eUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUo
ZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0yMDAs
OCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAg
ICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlw
ZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90
cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkK
LSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eShwcmV2
aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAg
ICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRl
clByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKQEAgLTIz
OSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3Bl
cnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAw
LCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJl
LT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVy
aWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQot
ICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQ
cm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5m
by50eXBlKCkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAt
IDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBA
IC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50
Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkg
KiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkK
K3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1
Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVy
ZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4g
bmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOwor
ICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNp
dHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0y
ODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAog
ICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2
aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQo
KTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJ
blByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAg
ICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBzdHJ1Y3R1
cmUtPm1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0
aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9
CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHdlIG1heSBoYXZlIGdvdCB0byB0
aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0
aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAgLTMyNyw4ICsz
MjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAg
IFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFu
c2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
ICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQ
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZM
aW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbjsKICAgICB9CiAgICAgCkBAIC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgfQogCiAgICAgb2Zmc2V0ID0gdHJhbnNp
dGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICB0
cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpZiAodHJhbnNp
dGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkK
KyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFu
c2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRh
YmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsK
IH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9m
ZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVu
RGljdGlvbmFyeVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlU
YWJsZS0+c2l6ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291
bnQpOwotCisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8u
dHlwZSgpKTsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0
eVRhYmxlLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVy
ID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsK
ICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9m
ZnNldCk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUg
bmV3IHByb3BlcnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAg
ICAgICAgICBpdGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRo
ZWlyIGZpbmFsIGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlDb3VudDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBt
X3Byb3BlcnR5VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyAr
NTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJl
dHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlP
ZmZzZXQgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlv
bkNhY2hlKTsKIApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlXaXRob3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9
IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIGlmIChvdXRP
ZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICBncm93T3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTU5Myw4ICs1
OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUCiAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxEYXRhKTsKIAog
ICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKLSAg
ICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVydHlOYW1lKTsKIH0KIAog
dm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBAQCBQYXNzT3duUHRyPFBy
b3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4g
U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3Bl
cnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVy
dHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBt
X29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJv
cGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJv
cGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5m
by50eXBlKCkpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFs
aWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJs
ZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsK
IAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVl
ID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZp
Y1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09
IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNldChnZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChh
dHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBAIHNpemVfdCBTdHJ1Y3R1
cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAg
ICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVkIG5ld09mZnNldDsKLQot
ICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgbmV3
T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgZWxzZQot
ICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKKyAgICBQcm9wZXJ0
eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRPZmZzZXQobV90eXBlSW5m
by50eXBlKCkpOwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShn
bG9iYWxEYXRhLCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSkpOwogCkBAIC03MTEsNyArNzA2LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNW
YWx1ZShKU0dsbwogICAgIHJldHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6
OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpyZW1vdmUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiAKQEAgLTcyNCw3ICs3MTksNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmUo
UHJvcGVydHlOYW1lIHByCiAgICAgaWYgKCFwb3NpdGlvbi5maXJzdCkKICAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAog
ICAgIG1fcHJvcGVydHlUYWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAgICBtX3Byb3BlcnR5VGFi
bGUtPmFkZERlbGV0ZWRPZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1
bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgc2l6
ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJl
KiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFBy
b3BlcnR5T2Zmc2V0Jik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNW
YWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0
dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hh
bmdlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAzLDMyICsxMDMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNF
eHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAg
ICAgYm9vbCBkaWRUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9
Ci0gICAgICAgIGJvb2wgcHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICBib29s
IHB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5U3RvcmFnZVNpemUoKSk7
CisgICAgICAgICAgICBBU1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXpl
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewot
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPj0gY3VycmVudFNpemUpOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50U2l6ZSA9PSBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRTaXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
bV9vZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49
IGN1cnJlbnRTaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gb3V0
T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNh
cGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAg
ICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHko
KSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlLT5zaXplKCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgfQot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9y
YWdlU2l6ZSgpOyAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91
bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAg
ICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBh
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90
b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAh
PSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTE0OSwxOCArMTQ5LDExNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKLSAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NF
UlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91
cy5nZXQoKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOworICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAg
ICAgICAgYm9vbCB0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0
dXJlVG9GaW5kKTsKIAotICAgICAgICB2b2lkIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OwotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHk7IH0KLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6
ZSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsg
cmV0dXJuIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAg
ICBzaXplX3QgaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNV
c2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsKLQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBn
ZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5
KCk7CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZv
KTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFs
T2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lU3RvcmFn
ZUNhcGFjaXR5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0
T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCBvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSAhPSBGaW5hbE9iamVj
dFR5cGUpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAg
ICAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQp
OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZz
X2luZm8pOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gdGhpcy0+
aW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5l
Q2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNl
dCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2Jq
ZWN0VHlwZTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemVGb3JLbm93bkZp
bmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUlu
Zm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1
bHQ7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5saW5lU3RvcmFnZUNhcGFj
aXR5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxp
bmVTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9y
YWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5s
aW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25l
ZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
cHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKKyAgICAgICAgfQorICAg
ICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7
CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdFZhbGlkT2Zmc2V0KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdl
Q2FwYWNpdHk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zm
c2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkg
eworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBtX3Byb3BlcnR5VGFibGUt
PnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0
b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxpbmVTdG9yYWdlQ2FwYWNp
dHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgLSAxOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGJvb2wgaXNWYWxp
ZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBvZmZzZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgpCisgICAgICAgICAgICAgICAg
JiYgb2Zmc2V0IDw9IGxhc3RWYWxpZE9mZnNldCgpOworICAgICAgICB9CisKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFs
dWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc1Jl
YWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87
IH0KQEAgLTE3Nyw3ICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBo
YXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uRW51bWVy
YWJsZVByb3BlcnRpZXM7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDog
bV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4g
IUpTQzo6aXNWYWxpZE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9u
VHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50OyB9CkBAIC0yNzMsOCArMzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRv
RGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFy
eUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
KTsKLSAgICAgICAgc2l6ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9w
ZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKTsKQEAgLTMwMSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50
IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNl
IHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0
LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGgu
Ci0gICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQg
KyAxOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0LCBtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFs
aWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSBjb25z
dDsKQEAgLTMxMCw4ICs0MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbm9PZmZzZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKIAogICAgICAgICBUeXBlSW5mbyBt
X3R5cGVJbmZvOwpAQCAtMzM2LDEwICs0MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hw
b2ludFNldDsKIAotICAgICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5Owor
ICAgICAgICB1aW50MzJfdCBtX291dE9mTGluZUNhcGFjaXR5OwogCiAgICAgICAgIC8vIG1fb2Zm
c2V0IGRvZXMgbm90IGFjY291bnQgZm9yIGFub255bW91cyBzbG90cwotICAgICAgICBpbnQgbV9v
ZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogCiAgICAgICAgIHVuc2ln
bmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0
eVRhYmxlIDogMTsKQEAgLTM1MywyNiArNDUyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5l
IHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5m
byk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
KTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90
Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9w
ZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUu
dWlkKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90
Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zm
c2V0OwogICAgIH0KIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAK
ICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRX
aXRoU3RyaW5nKG5hbWUuaW1wbCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50
cnktPm9mZnNldCA6IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zm
c2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="159173"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150858</attachid>
            <date>2012-07-04 19:12:03 -0700</date>
            <delta_ts>2012-07-04 19:44:30 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_22.diff</filename>
            <type>text/plain</type>
            <size>264064</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDkgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFW
MTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBB
QUhAWgorICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVj
dHVyZUBKU0NAQFNBUEFWMTJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBBQUhA
WgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2Fk
ZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTbG93
Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBA
V1RGQEBQQVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3RhdGlj
R2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9AMTJA
SEBaCkBAIC0xOTIsNyArMTkyLDYgQEAgRVhQT1JUUwogICAgID9mcm9tQElkZW50aWZpZXJASlND
QEBTQT9BVjEyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQcm9wZXJ0
eVNsb3RASlNDQEBBQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/ZnVuY3Rp
b25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEJWVVN0cmluZ0AyQFhaCi0gICAgP2dl
dEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAVlByb3BlcnR5TmFtZUAyQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q2FsbGFibGVPYmplY3RTbG93QEpTQ0BAWUFQQVZKU0NlbGxAMUBQQVYyMUBAWgpA
QCAtMjExLDExICsyMTAsMTIgQEAgRVhQT1JUUwogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJl
dGVyQEpTQ0BAU0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlND
QEAkMEFAQFdURkBAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKKyAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAg
ID9nZXR0ZXJAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAg
P2dsb2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgogICAg
ID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCisgICAgP2dyb3dPdXRPZkxpbmVT
dG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFUEFWPyRXcml0ZUJhcnJpZXJCYXNlQFc0VW5rbm93bkBK
U0NAQEAyQEFBVkpTR2xvYmFsRGF0YUAyQElJQFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBB
QUVYWFoKLSAgICA/Z3Jvd1Byb3BlcnR5U3RvcmFnZUBKU09iamVjdEBKU0NAQFFBRVBBVj8kV3Jp
dGVCYXJyaWVyQmFzZUBXNFVua25vd25ASlNDQEBAMkBBQVZKU0dsb2JhbERhdGFAMkBJSUBaCiAg
ICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZK
U1ZhbHVlQDJAMkBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBJQFoKICAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNT
dGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBAWgpAQCAtMzI4LDcgKzMyOCw3IEBAIEVYUE9SVFMKICAg
ICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmls
ZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2Ft
cGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBs
QFVTdHJpbmdASlNDQEBRQkU/QVYxMkBJSUBaCi0gICAgP3N1Z2dlc3RlZE5ld1Byb3BlcnR5U3Rv
cmFnZVNpemVAU3RydWN0dXJlQEpTQ0BAUUFFSVhaCisgICAgP3N1Z2dlc3RlZE5ld091dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFw
QEpTQ0BAUUFFUEFWSW5jcmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3Rv
dHlwZUBKU1ZhbHVlQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAg
ID90aGlzT2JqZWN0QERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBYWgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk0LDYgKzEwOTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxQcm9wZXJ0eU9mZnNl
dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXFByb3BlcnR5U2xvdC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQy
NzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZFMTU5Mjc1RDIwMDRD
QjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZGNDI3NzIxNTkyNzVE
ODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1
QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZG
RkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBE
RkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGlz
YXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVH
bG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1
OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdD
RkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNyw2ICsyMTA5LDcg
QEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJ
CQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywK
IAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywK
KwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLywKIAkJ
CQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKIAkJCQk2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8sCiAJCQkJNjVDMDJG
QkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEsNiArMjgxNCw3IEBA
CiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQ
cm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJfaW1t
X1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1aW50OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNElt
bTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBB
Uk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIzLDQ2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkp
OworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGlu
c3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAg
ICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFdICYgMHhGMDAwKSk7
CisgICAgICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAgcHRyWzBdIHw9IE9Q
X0xEUl9pbW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4MEYwMCkgPDwg
NDsKKyAgICAgICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAg
ICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6
CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAgICAgICAgICAgIHB0
clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQUREX2ltbV9UMzsKKyAg
ICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0OworICAgICAgICAgICAg
cHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0FE
RF9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2go
cHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdP
ZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1
LDYgKzI5NSwzNiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgbV9sYWJlbDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxlTG9hZExhYmVsOgor
ICAgIC8vCisgICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRzIGEgbG9hZFB0ciBp
bnN0cnVjdGlvbiB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgorICAgIC8vIHNvIHRo
YXQ6CisgICAgLy8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIpCisgICAgLy8KKyAg
ICAvLyBiZWNvbWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJbW1QdHIoaSksIGEs
IGIpCisgICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAg
ICAgCisgICAgcHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCgpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwoQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAgICAgICAgICAgIDog
bV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQXNzZW1i
bGVyTGFiZWwgbV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVsUHRyOgogICAgIC8v
CkBAIC01NjIsNiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBt
X2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
CisgICAgeworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAg
ICBMYWJlbCBsYWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3RlZDoKICAgICB7CiAg
ICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0
YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExv
YWQoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkp
OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsOwogY2xh
c3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFM
YWJlbDMyOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xhc3MgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0eXBlcyBhcmUgYWxs
IHByZXR0eSBtdWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBDb2RlUHRyIChvciBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFtZSkuICBUaGVzZQpA
QCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRh
dGFMYWJlbFB0ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJl
bDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KGludCBv
ZmZzZXQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9uKCkKQEAgLTE0Niw2
ICsxNDgsMTUgQEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CitwdWJsaWM6CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKKyAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4cGxpY2l0IENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAgICAgOiBDb2RlTG9j
YXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkgeyB9Cit9OworCiBp
bmxpbmUgQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVj
dGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VU
KG9mZnNldCk7CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOwogfQogCitp
bmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29u
dmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NFUlRfVkFMSURfQ09E
RV9PRkZTRVQob2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2Fk
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5rQnVmZmVyOjpDb2Rl
UmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygiICAgIENvZGUgYXQg
WyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNp
emUoKSk7CiAgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2RlKCksIG1fc2l6ZSwg
IiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIgICAgICAgIDxubyBk
aXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRp
c2Fzc2VtYmx5IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTGlua0J1ZmZlciB7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxD
b21wYWN0OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJl
bDMyOwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQ
dHI7CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29u
dmVydGlibGVMb2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpAQCAtMTgwLDYgKzE4
MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21w
YWN0KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQo
bGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxv
YWQgbG9jYXRpb25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXI6OmdldExp
bmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOworICAgIH0K
KwogICAgIC8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBj
YWxsLCBnaXZlbiBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgY29k
ZS4KICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2FsbCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNjAwLDYgKzYwMCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQorICAg
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49MCAmJiBh
ZGRyZXNzLm9mZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJXaWRlOEJpdElt
bWVkaWF0ZShkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAgQ29udmVydGlibGVM
b2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVy
dGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoYWRkcmVz
cy5tX3B0ciwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9t
cihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
MiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9s
aW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aExvYWQobGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJl
bCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZlKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
bGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2Fk
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAgICAgICBw
dHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2FzZSBPUF9N
T1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAg
ICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFi
ZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJn
ZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lk
X3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWlu
OgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTog
ewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAg
ICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpA
QCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAg
ICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQo
KSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
N10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lm
aWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2Us
IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgs
NyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAg
ICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAg
ICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVk
LCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQor
ICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAg
LTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAh
PSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQp
KSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBu
b3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTc2LDEwICsxNzYsMTAgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAg
ICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAgICAg
UHJvcGVydHlPZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobXlPZmZzZXQg
PT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChteU9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3VuZDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICByZXN1bHQubV9z
dHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5tX29mZnNldCkpCiAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fc3RydWN0dXJlU2V0LnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIy
MywxMSArMjIzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICB9CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVChyZXN1bHQubV9v
ZmZzZXQgPT0gbm90Rm91bmQpOworICAgICAgICBBU1NFUlQoIWlzVmFsaWRPZmZzZXQocmVzdWx0
Lm1fb2Zmc2V0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKSB7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHJlc3VsdC5t
X29mZnNldCkpIHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Nsb3dQYXRoOwogICAg
ICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKICAgICAgICAgcmVzdWx0Lm1fY2hh
aW4uY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBHZXRCeUlkU3RhdHVzX2gKICNkZWZpbmUgR2V0QnlJZFN0YXR1c19oCiAKKyNp
bmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCkBAIC00NiwxMyArNDcsMTMgQEAgcHVibGljOgogCiAg
ICAgR2V0QnlJZFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQotICAg
ICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZz
ZXQpCiAgICAgewogICAgIH0KICAgICAKICAgICBHZXRCeUlkU3RhdHVzKAogICAgICAgICBTdGF0
ZSBzdGF0ZSwgYm9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0ID0gU3RydWN0dXJlU2V0KCksCi0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwg
SlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4gY2hh
aW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IGludmFs
aWRPZmZzZXQsIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKSwgVmVjdG9yPFN0cnVj
dHVyZSo+IGNoYWluID0gVmVjdG9yPFN0cnVjdHVyZSo+KCkpCiAgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwg
bV9jaGFpbihjaGFpbikKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0K
ICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFpbjsgfSAvLyBSZXR1cm5zIGVtcHR5IHZlY3RvciBpZiB0aGlzIGlzIGEgZGlyZWN0IGFjY2Vz
cy4KICAgICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmlj
VmFsdWU7IH0gLy8gUmV0dXJucyBKU1ZhbHVlKCkgaWYgdGhlcmUgaXMgbm8gc3BlY2lmaWMgdmFs
dWUuCi0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAK
ICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9
CiAgICAgCkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlU2V0IG1fc3Ry
dWN0dXJlU2V0OwogICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBtX2NoYWluOwogICAgIEpTVmFsdWUg
bV9zcGVjaWZpY1ZhbHVlOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBtX29mZnNldDsKICAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDgsNiArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVf
d2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8o
b3BfcmVzb2x2ZV93aXRoX3RoaXMsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYnlfaWQsIDkpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAor
ICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIC8qIGhhcyB2YWx1ZSBw
cm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfaWRfc2VsZiwgOSkgLyogaGFz
IHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZF9wcm90bywg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9p
ZF9jaGFpbiwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkBAIC0xMjIsOSArMTIzLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc3RyaW5nX2xlbmd0aCwg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1
bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAorICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTIx
ODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTEgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbQogICAgIGlmICghc3RydWN0dXJlKQogICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCi0g
ICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgewot
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQotICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWQKKyAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0
X2J5X2lkX291dF9vZl9saW5lKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICAgICAg
CiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwg
MCwgMCwgb2Zmc2V0KTsKICAgICB9CkBAIC01NiwxNiArNTcsMTggQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAogICAgIEFTU0VSVChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QKLSAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsCisgICAg
ICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZQorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29m
X2xpbmUpOwogICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1
Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKICAgICBBU1NFUlQobmV3U3RydWN0dXJl
KTsKICAgICBBU1NFUlQoY2hhaW4pOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1
Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgaWYg
KG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsK
KyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgCiAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGNoYWluLCBvZmZzZXQpOwogI2Vsc2UKQEAgLTk0LDI0ICs5NywyNCBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAg
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0
KAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBs
YWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkg
eworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAgICAgICBTaW1wbGVSZXBsYWNlLAogICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKSwKICAgICAgICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAgICAgIG9mZnNldCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCAwLCAwLCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKICAgICAgICAgQVNTRVJUKHN0dWJJbmZvLnUucHV0
QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8u
dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPmdldCgK
ICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKLSAgICAg
ICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cygKICAgICAgICAgICAg
ICAgICBTaW1wbGVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJ
ZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuZ2V0KCksCkBAIC0xMTksMTQgKzEyMiwxNCBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAg
ICAgc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5nZXQoKSwKICAgICAgICAgICAg
ICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgfQogICAg
ICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICNlbHNlIC8v
IEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQdXRC
eUlkU3RhdHVzX2gKICNkZWZpbmUgUHV0QnlJZFN0YXR1c19oCiAKKyNpbmNsdWRlICJQcm9wZXJ0
eU9mZnNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fb2xkU3RydWN0dXJlKDApCiAg
ICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVjdHVyZUNoYWluKDAp
Ci0gICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxp
ZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluLAotICAgICAg
ICBzaXplX3Qgb2Zmc2V0KQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUp
CiAgICAgICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQpAQCAtNzQsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gIW1fb2xkU3RydWN0dXJlKTsKICAgICAgICAgQVNT
RVJUKChtX3N0YXRlICE9IFNpbXBsZVRyYW5zaXRpb24pID09ICFtX25ld1N0cnVjdHVyZSk7CiAg
ICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1wbGVUcmFuc2l0aW9uKSA9PSAhbV9zdHJ1Y3R1
cmVDaGFpbik7Ci0gICAgICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1f
c3RhdGUgPT0gVGFrZXNTbG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IG5vdEZvdW5kKSk7CisgICAg
ICAgIEFTU0VSVCgobV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IG1fc3RhdGUgPT0gVGFrZXNT
bG93UGF0aCkgPT0gKG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQpKTsKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJl
OyB9CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0
cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RydWN0dXJlQ2hhaW47IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBt
X29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwogICAgIFN0cnVj
dHVyZUNoYWluKiBtX3N0cnVjdHVyZUNoYWluOwotICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNyAr
MzIsMTkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBFTkFCTEUoTExJTlQpIHx8IEVOQUJM
RShKSVQpCiBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yU3RydWN0dXJlKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSWRlbnRpZmllciYgaWRl
bnRpZmllcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKICAgICBKU0NlbGwq
IHNwZWNpZmljVmFsdWU7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAogICAgICAgICAqY29kZUJs
b2NrLT5nbG9iYWxEYXRhKCksIGlkZW50aWZpZXIsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9m
ZnNldChvZmZzZXQpKQogICAgICAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cygpOwogICAg
IAogICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVzKFJlc29sdmVHbG9iYWxTdGF0dXM6OlNp
bXBsZSwgc3RydWN0dXJlLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogfQorI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkgfHwgRU5BQkxFKEpJVCkKIAogc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMg
Y29tcHV0ZUZvckxMSW50KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAx
MjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFJlc29sdmVH
bG9iYWxTdGF0dXNfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDYsMTIgKzQ3LDEyIEBAIHB1YmxpYzoKICAgICBSZXNvbHZlR2xvYmFsU3RhdHVzKCkKICAg
ICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmUoMCkK
LSAgICAgICAgLCBtX29mZnNldChub3RGb3VuZCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKLSAg
ICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNl
dCA9IG5vdEZvdW5kLAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSAwLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC03MCwxMyArNzEsMTMgQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aDsgfQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY2lmaWNWYWx1ZTsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7CiB9OyAvLyBj
bGFzcyBSZXNvbHZlR2xvYmFsU3RhdHVzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDE1ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0cnVjdHVyZXMuc2l6ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhbGxBcmVVc2lu
Z0lubGluZVByb3BlcnR5U3RvcmFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fc3RydWN0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZXNbaV0tPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICAKICAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgdGhhdCB0aGUgc3RydWN0dXJlIHNl
dCBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseQogICAgIC8vIG9uZSBzdHJ1Y3R1cmUuCiAgICAgU3Ry
dWN0dXJlKiBzaW5nbGV0b25TdHJ1Y3R1cmUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwogICAgICAgICAgICAgICAgIGludDhfdCBz
Y3JhdGNoR1BSOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOworICAg
ICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAg
ICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CiAgICAgICAgICAgICAgICAgaW50
MzJfdCBkZWx0YUNhbGxUb1Nsb3dDYXNlOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFD
aGVja0ltbVRvQ2FsbDsKQEAgLTIxOSw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
c3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1
Y3R1cmVDaGVjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAgICAgaW50
MTZfdCBkaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0yMzAsNiArMjMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIH0gZ2V0OwogICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxv
YWQ7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
ZGlzcGxhY2VtZW50TGFiZWw7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVy
bmFsRnVuY3Rpb24oYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxG
dW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
ICAgICB2b2lkIGhhbmRsZUdldEJ5T2Zmc2V0KAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCi0gICAgICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgICAgIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYp
OwpAQCAtMTYzMCwyNSArMTYzMCwyMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAogICAg
IGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJ
bmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgIGJvb2wgdXNlSW5saW5l
U3RvcmFnZSwgc2l6ZV90IG9mZnNldCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAg
ICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0Owot
ICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpCiAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNp
emVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNl
dE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAg
IH0gZWxzZSB7CisgICAgZWxzZQogICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0g
ICAgfQogICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCiAgICAgICAgIGFkZFRvR3JhcGgoCiAg
ICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0
YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCiAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UpKTsKICAgICAgICAgCiAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7
Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zmc2V0T2Zmc2V0Owor
ICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0
KTsKICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nl
c3NEYXRhKTsKIH0KQEAgLTE2NzcsNyArMTY3Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVj
dHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMuc3RydWN0
dXJlU2V0KCkpKSwgYmFzZSk7CiAgICAgCi0gICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlOwogICAg
IGlmICghZ2V0QnlJZFN0YXR1cy5jaGFpbigpLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJ1Y3R1
cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpbmds
ZXRvblN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CkBA
IC0xNjg2LDkgKzE2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgICAgICAgICAgY3VycmVudFN0cnVjdHVyZSA9IGdldEJ5SWRTdGF0dXMuY2hhaW4oKVtpXTsK
ICAgICAgICAgICAgIGJhc2UgPSBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soY3VycmVudE9i
amVjdCwgY3VycmVudFN0cnVjdHVyZSk7CiAgICAgICAgIH0KLSAgICAgICAgdXNlSW5saW5lU3Rv
cmFnZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNl
dCgpLmFsbEFyZVVzaW5nSW5saW5lUHJvcGVydHlTdG9yYWdlKCk7CisgICAgfQogICAgIAogICAg
IC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8KICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFz
ZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlzIGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9u
ZSB3aXRoCkBAIC0xNzA3LDggKzE2OTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgIH0KICAgICAKICAgICBoYW5kbGVHZXRCeU9mZnNldCgKLSAgICAgICAgZGVz
dGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB1c2VJ
bmxpbmVTdG9yYWdlLAotICAgICAgICBnZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAg
ZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBn
ZXRCeUlkU3RhdHVzLm9mZnNldCgpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJlcGFy
ZVRvUGFyc2VCbG9jaygpCkBAIC0yMTcyLDcgKzIxNjMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUu
b3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChnZXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAor
ICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChnZXRJbnN0cnVj
dGlvbi0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGdldEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbZ2V0SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAg
LTIyMjUsNyArMjIxNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U2NvcGVkVmFyLCBPcEluZm8oc2xvdCksIGdl
dFNjb3BlQ2hhaW4sIGdldChzb3VyY2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogewor
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0
X29mX2xpbmU6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9k
ZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0y
MjQxLDggKzIyMzQsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29m
X2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CiAgICAgICAgICAgICBOb2RlSW5k
ZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsK
QEAgLTIyNTksMjUgKzIyNTUsMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWhhc0V4aXRTaXRlICYmIHB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHV0QnlJ
ZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0T2Zmc2V0OwogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7
Ci0gICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPmlzVXNp
bmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
cHV0QnlJZFN0YXR1cy5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3Rv
cmFnZSA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVj
dCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNl
dE9mZnNldCA9IHNpemVvZihKU09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwg
YmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlPZmZzZXQsIE9wSW5mbyht
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgcHJvcGVydHlTdG9yYWdlLCBiYXNl
LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vz
c0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0Rh
dGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNl
KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmICghaGFzRXhpdFNpdGUKICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgcHV0QnlJZFN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKQotICAgICAgICAgICAgICAg
ICAgICAgICAmJiBwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID09IHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0YXR1cy5vbGRT
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBwdXRCeUlkU3RhdHVzLm5ld1N0cnVj
dHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0
cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly
ZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1
cmUoKSwKQEAgLTIzMDgsMTYgKzIyOTksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeUlkU3Rh
dHVzLm5ld1N0cnVjdHVyZSgpKSkpLAogICAgICAgICAgICAgICAgICAgICBiYXNlKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgICAgICAgICAgaWYg
KHB1dEJ5SWRTdGF0dXMubmV3U3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQocHV0QnlJZFN0YXR1cy5vZmZzZXQo
KSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihKU09i
amVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UgPSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSks
CkBAIC0yMzI2LDcgKzIzMTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBwdXRCeUlkU3RhdHVzLm9mZnNl
dCgpICsgb2Zmc2V0T2Zmc2V0OworICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9m
ZnNldCA9IGluZGV4UmVsYXRpdmVUb0Jhc2UocHV0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZp
ZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFw
cGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjczOCw4
ICsyNzI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5T2Zm
c2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcHJlZGljdGlvbiwgZ2xvYmFsT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllck51bWJlciwgc3RhdHVzLnN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFn
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1cy5vZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZU51bWJlcisrOyAvLyBTa2lwIG92ZXIgdGhlIHVudXNlZCBnbG9iYWwgcmVzb2x2ZSBp
bmZvLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSArMTE5LDEzIEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFy
OgogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6
CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTg2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQgogI2VuZGlmCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9uLCBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2xvd1BhdGhHZW5lcmF0
b3ItPmxhYmVsKCkpKTsKICAgICAgICAgaW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lID0g
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX2RvbmUpKTsKKyAgICAgICAgaW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAgICAgICAgIGluZm8ucGF0Y2guZGZn
LmJhc2VHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV9iYXNlR1BSOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vz
c2VzW2ldLm1fdmFsdWVHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBz
dHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFn
ZUxvYWQsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGxvYWRPclN0
b3JlLAogICAgICAgICBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGhHZW5lcmF0b3IsCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lLApAQCAtMTQ4LDYgKzE0OSw3IEBAIHN0cnVj
dCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVJbW0sCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrLAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9h
ZCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgdGFnTG9hZE9yU3Rv
cmUsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2Fk
T3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLApA
QCAtMTYxLDYgKzE2Myw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAg
IDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVJbW0oc3Ry
dWN0dXJlSW1tKQogICAgICAgICAsIG1fc3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgLCBtX2xvYWRPclN0b3JlKGxvYWRPclN0b3JlKQogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE4Miw2ICsxODUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxQdHIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q29u
dmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgbV9sb2FkT3JTdG9yZTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIHZvaWQgZGZnUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjbwogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgZGZnUmVw
YXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgb2Zmc2V0LCBjb25zdCBG
dW5jdGlvblB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQorc3RhdGljIHZvaWQg
ZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIGNvbnN0IEZ1bmN0aW9uUHRyICZzbG93UGF0aEZ1bmN0aW9uLCBib29sIGNvbXBhY3Qp
CiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTUy
LDE4ICs1MiwxOSBAQCBzdGF0aWMgdm9pZCBkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kCiAK
ICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9h
ZC4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZElu
c3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxl
TG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0b3JhZ2VMb2FkKSwg
aXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAo
Y29tcGFjdCkKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQpOworICAgICAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JT
dG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICAgICBlbHNl
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2Fk
T3JTdG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCk7CisgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIG9mZnNldFJlbGF0
aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgaWYgKGNvbXBhY3QpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZz
ZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykp
OwotICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXQgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9h
ZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRM
b2FkT3JTdG9yZSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0
YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1BheWxvYWRMb2FkT3JT
dG9yZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvVGFnTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2
ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTA1LDcg
KzEwNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtSZXN0b3JlU2NyYXRjaChMaW5rQnVmZmUKICAgICBs
aW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNj
ZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJl
bEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9TbG93Q2FzZSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nl
c3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgc2l6ZV90IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENvZGVMb2NhdGlvbkxhYmVsIHN1Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9u
TGFiZWwgc2xvd0Nhc2VMYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBzdHViUm91dGluZSkK
K3N0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b2RlTG9jYXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNl
TGFiZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCiB7CiAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMTM5LDEzICsx
NDAsMjMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgICAg
ICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAgIH0KICAgICAKLSAgICBzdHViSml0Lmxv
YWRQdHIocHJvdG9PYmplY3QtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHRHUFIp
OworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBv
ZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQUik7CisgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihwcm90b09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KSwgcmVzdWx0R1BSKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Ci0gICAgc3R1YkppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCkpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYK
KyAgICB9IGVsc2UgeworICAgICAgICBzdHViSml0LmxvYWRQdHIocHJvdG9PYmplY3QtPmFkZHJl
c3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pKSwgcmVzdWx0R1BSKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0
SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgfQog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICAKQEAgLTI1Myw3
ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
aWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFz
ZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAo
IWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksMTIgKzM2MCwyMCBAQCBzdGF0
aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICB8fCBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CiAgICAgICAg
ICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRl
cikgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwotICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkg
ewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSwgc2NyYXRjaEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBzdHViSml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFz
ZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlv
bkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg1LDEzICs0MDQsMjcgQEAg
c3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgaGFu
ZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKICAgICAgICAgICAgIHN0dWJKaXQuanVtcChHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgcmVzdWx0R1BS
KTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9C
YXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgaWYgKGJhc2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7CisgICAgICAgICAgICAgICAgICAg
IHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BS
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CisgICAg
ICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgICAgICBzdHVi
Sml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldFJlbGF0
aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdEdQUik7CiAjZW5kaWYKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKICAgICAg
ICAgICAgIGlzRGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDUwLDcgKzQ4Myw3IEBAIHN0
YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRFByb3RvTGlzdChFeGUKICAgICAKICAgICBBU1NFUlQo
c2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4o
ZXhlYywgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
ICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjcsNyArNjAwLDcg
QEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIAogICAgIE1hY3JvQXNzZW1i
bGVyIHN0dWJKaXQ7CiAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAm
JiAod3JpdGVCYXJyaWVyTmVlZGVkIHx8ICFzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdl
KCkpKSB7CisgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAod3JpdGVCYXJy
aWVyTmVlZGVkIHx8IGlzT3V0T2ZMaW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewog
ICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIoYmFz
ZUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAg
ICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKQEAgLTU4NiwyMCArNjE5LDIwIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKLSAgICAg
ICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNh
Y2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
LCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7
CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwor
ICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldElu
SW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hH
UFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkp
OworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0KICNl
bmRpZgogICAgIApAQCAtNjg1LDIwICs3MTgsMjAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5z
aXRpb25TdHViKAogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAoc3Ry
dWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQorICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBl
bHNlIHsKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IGlmIChzdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgc3R1YkppdC5z
dG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQuc3Rv
cmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
c3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJK
aXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgICAgIHN0dWJKaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICAK
QEAgLTc1Miw3ICs3ODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRl
KiBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MK
LSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
IT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQorICAgICAgICAgICAgaWYg
KG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkBA
IC04MTUsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3Rh
dAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0g
ICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0x
KSkpOwogICAgIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVBh
eWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5
bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5
U3RvcmFnZUxvYWQgPSBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVBheWxvYWRHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSks
IHJlc3VsdFBheWxvYWRHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHRh
Z0xvYWRXaXRoUGF0Y2ggPSBtX2ppdC5sb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRj
aChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAg
IEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0IHBheWxvYWRMb2FkV2l0aFBhdGNoID0gbV9q
aXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApAQCAtNTUwLDcg
KzU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICB9
CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVj
b3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3Ry
dWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICB0YWdMb2FkV2l0
aFBhdGNoLCBwYXlsb2FkTG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwK
ICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLCBzYWZlQ2FzdDxp
bnQ4X3Q+KHJlc3VsdFRhZ0dQUiksCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3Vs
dFBheWxvYWRHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLApAQCAtNTY1LDcgKzU2
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdy
aXRlQmFycmllcihiYXNlUGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlVXNlLCBXcml0ZUJh
cnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKLSAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQuY29udmVydGlibGVMb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsMzIgdGFnU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaCh2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAg
SklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHBheWxvYWRTdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0
b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0
eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2Rl
T3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLAorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlT
dG9yYWdlTG9hZCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHRh
Z1N0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkRhdGFM
YWJlbENvbXBhY3QocGF5bG9hZFN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLAogICAgICAgICAgICAg
c2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQ
UiksCkBAIC0zNTUwLDcgKzM1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBzdG9yYWdlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM4OTEsOCArMzg5
MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNOb3RNYXRjaCA9IG1faml0LmJyYW5jaFB0cihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAg
ICAgIC8vIEZhc3QgY2FzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkp
LCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZl
SW5mbywgb2Zmc2V0KSksIHJlc29sdmVJbmZvR1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NF
UlQpCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNo
MzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0
ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVz
b2x2ZUluZm9HUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOwogICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRQYXlsb2FkR1BSLCBy
ZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNyArNDk3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVy
OjpQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gbV9qaXQucGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAg
ICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgSklUQ29t
cGlsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPQorICAgICAg
ICBtX2ppdC5jb252ZXJ0aWJsZUxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICBK
SVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkV2l0aFBhdGNoID0gbV9qaXQubG9hZFB0
cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgMCksIHJlc3VsdEdQUik7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIGRvbmVM
YWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01MTcsOCArNTE4LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgIH0KICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFj
Y2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNvcmQoCi0gICAgICAgICAgICBjb2RlT3Jp
Z2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBsb2FkV2l0aFBhdGNoLCBz
bG93UGF0aC5nZXQoKSwKLSAgICAgICAgICAgIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90Pihi
YXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRHUFIpLAorICAgICAgICAgICAgY29kZU9y
aWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdl
TG9hZCwgbG9hZFdpdGhQYXRjaCwKKyAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFi
ZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BS
KSwKICAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCiAgICAgICAgICAg
ICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0
ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CkBAIC01MzYsNyArNTM3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogCiAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJv
cGVydHlBY2Nlc3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSks
IHNjcmF0Y2hHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVMb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdp
dGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwogCiAgICAgSklUQ29tcGlsZXI6
OkxhYmVsIGRvbmVMYWJlbCA9IG1faml0LmxhYmVsKCk7CkBAIC01NjYsNyArNTY4LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAog
ICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQotICAgIG1f
aml0LmFkZFByb3BlcnR5QWNjZXNzKFByb3BlcnR5QWNjZXNzUmVjb3JkKGNvZGVPcmlnaW4sIHN0
cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxD
b21wYWN0KHN0b3JlV2l0aFBhdGNoLmxhYmVsKCkpLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVs
LCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwg
c2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BSKSkpOworICAgIG1faml0LmFkZFByb3BlcnR5QWNj
ZXNzKAorICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKKyAgICAgICAgICAgIGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxv
YWQsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQ
YXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKKyAgICAgICAgICAgIHNh
ZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGgucmVsZWFzZSgpKTsKIH0KIApAQCAtMzU3NCw3ICszNTgwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
ICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAg
ICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJl
YWs7CkBAIC0zODkwLDkgKzM4OTYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzdHJ1Y3R1cmVzRG9udE1hdGNo
ID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc29sdmVJbmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2
ZUluZm8sIG9mZnNldCkpLCByZXNvbHZlSW5mb0dQUik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21w
aWxlcjo6U2NhbGVQdHIpLCByZXN1bHRHUFIpOworI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkK
KyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPdXRPZkxpbmUgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXNvbHZlSW5mb0dQUiwgVHJ1c3RlZElt
bTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7
CisgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QmFzZUluZGV4KHJlc3VsdEdQUiwgcmVzb2x2ZUluZm9HUFIs
IEpJVENvbXBpbGVyOjpTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKEpTVmFsdWUpKSksIHJlc3VsdEdQUik7CiAgICAgICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwMyw4ICsyMTAzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhl
cml0b3JJRCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3Qn
cyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIuCi0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Uo
KSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBDbGFzc1R5cGU6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgYWNjZXB0YWJs
ZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNoLCBzbyBsb25nIGFzIHlvdSdy
ZSBmaW5lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAgICAgfQogCiAgICAgaWYgKGlzSlNGaW5hbE9iamVjdChj
ZWxsKSkgewotICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKKyAgICAgICAgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcg
KzE4MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHCiAgICAg
ICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7CiAKICAgICAgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBh
Y2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAog
ICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgpAQCAtMTg1
MSw3ICsxODUxLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUs
IGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAg
aWYgKCFjb3VudCkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dl
bmVyaWMpOwpAQCAtMzA0NSw2ICszMDQ1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dp
dGhfdGhpcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5F
X09QQ09ERShvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9n
ZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5
KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0zNTI3LDYgKzM1
MjgsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIHNraXBfZ2V0X3N0cmluZ19sZW5ndGg6
CiAgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOwogI2VuZGlmCisgICAgREVGSU5FX09QQ09E
RShvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlf
aWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIp
IG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJlY3QoYikKIApAQCAtMzU2NSw2ICszNTY3
LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNlbmRpZgogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3Ry
dWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAg
ICAgICAgIApAQCAtMzYwNSw3ICszNjA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KCpnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAg
aW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSB2UENbN10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2
UENbN10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZz
ZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCkBAIC0z
NjM5LDcgKzM2NDMsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIEFT
U0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2VsbCk7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVl
ID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2
UENbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2Jq
ZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkp
OwpAQCAtMzcxNyw3ICszNzIxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNW
YWx1ZSBleHBlY3RlZFN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihleHBlY3RlZCkuanNWYWx1ZSgp
OwogICAgICAgICBpbnQgaW5kZXggPSBjYWxsRnJhbWUtPnIoaSkuaSgpIC0gMTsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQ7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoc3Vic2NyaXB0ID09IGV4cGVjdGVkU3Vi
c2NyaXB0ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKSA9PSBpdC0+Y2FjaGVkU3RydWN0dXJlKCkpICYmIGl0LT5nZXRPZmZzZXQoaW5kZXgs
IG9mZnNldCkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNW
YWx1ZShhc09iamVjdChiYXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAg
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX2FjdGl2YXRpb24pCiAgICAgICAgIERFRklORV9PUChvcF9lcSkKICAgICAgICAgREVG
SU5FX09QKG9wX2VxX251bGwpCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
OgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQpA
QCAtMzE5LDggKzMyMCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X3ZhbCkKQEAgLTQ0MSw2ICs0NDUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9lcSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2dldF9ieV92YWwpCkBAIC00NzgsOCArNDgzLDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGlu
ZToKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spOwpAQCAtNTM3LDYgKzU0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0
dWJDb21waWxhdGkKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luTG9jYXRp
b24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5w
YXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoZ2V0U3RydWN0dXJlVG9Db21wYXJlKSk7CiAgICAgICAgIGluZm8ucGF0Y2gu
YmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2sgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5j
ZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoZ2V0U3RydWN0dXJlQ2hlY2spKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51Lmdl
dC5wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3Bl
cnR5U3RvcmFnZUxvYWQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZl
cmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGdldERpc3BsYWNlbWVudExhYmVsKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU1OSw3IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBQcm9wZXJ0eVN0dWJDb21waWxhdGkKICAgICBjYXNlIFB1dEJ5
SWQ6CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFz
ZWxpbmUudS5wdXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVu
Y2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKHB1dFN0cnVjdHVyZVRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5l
LnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
cHJvcGVydHlTdG9yYWdlTG9hZCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGluZm8u
cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGhvdFBhdGhCZWdpbkxvY2F0aW9uLCBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHV0RGlzcGxhY2VtZW50TGFiZWwpKTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBnZXRTdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGdldFN0cnVjdHVyZUNoZWNrOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9y
YWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBnZXREaXNwbGFjZW1lbnRMYWJlbDsKICNlbHNlCkBAIC0xODUsMTcgKzE4
NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAKLSAgICAgICAgUHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViR2V0QnlJZF9U
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJl
Z2luLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVU
b0NvbXBhcmUsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
cHV0UmVzdWx0KQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3Qg
ZGlzcGxhY2VtZW50TGFiZWwsCiAjZWxzZQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNw
bGFjZW1lbnRMYWJlbDEsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNl
bWVudExhYmVsMiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsMSwKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExh
YmVsMiwKICNlbmRpZgorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3Vs
dCkKICAgICAgICAgICAgIDogbV90eXBlKEdldEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhC
ZWdpbikKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlVG9Db21wYXJlKHN0cnVjdHVyZVRvQ29t
cGFyZSkKICAgICAgICAgICAgICwgZ2V0U3RydWN0dXJlQ2hlY2soc3RydWN0dXJlQ2hlY2spCisg
ICAgICAgICAgICAsIHByb3BlcnR5U3RvcmFnZUxvYWQocHJvcGVydHlTdG9yYWdlTG9hZCkKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgLCBnZXREaXNwbGFjZW1lbnRMYWJlbChkaXNw
bGFjZW1lbnRMYWJlbCkKICNlbHNlCkBAIC0yMDYsMTUgKzIxNCwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgUHJvcGVydHlTdHViQ29t
cGlsYXRpb25JbmZvKAorICAgICAgICAgICAgUHJvcGVydHlTdHViUHV0QnlJZF9ULCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgaG90UGF0aEJlZ2luLAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUs
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVy
dHlTdG9yYWdlTG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCkKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbAogI2Vsc2UKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxh
YmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbDMyIGRpc3BsYWNlbWVudExhYmVsMSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDIKICNlbmRpZgorICAgICAgICAgICAgKQog
ICAgICAgICAgICAgOiBtX3R5cGUoUHV0QnlJZCkKICAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KQogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oaG90UGF0aEJlZ2lu
KQorICAgICAgICAgICAgLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQp
CiAgICAgICAgICAgICAsIHB1dFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUp
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICwgcHV0RGlzcGxhY2VtZW50TGFiZWwo
ZGlzcGxhY2VtZW50TGFiZWwpCkBAIC0yOTUsNDAgKzMwOSw0MCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRlQ29t
cGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgSklUIGpp
dChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZz
ZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGppdC5wcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byhzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIHJldHVybkFkZHJlc3MsIGNhbGxGcmFtZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9y
cGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFNlbGZMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5
bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0
ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBp
bGVHZXRCeUlkU2VsZkxpc3Qoc3R1YkluZm8sIHBvbHltb3JwaGljU3RydWN0dXJlcywgY3VycmVu
dEluZGV4LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
KQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5i
eXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
TGlzdChzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgY3VycmVudEluZGV4LCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsIGNhY2hlZE9mZnNldCwgY2Fs
bEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENo
YWluTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIGludCBjdXJy
ZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNp
emVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0
Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgICAg
IGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qoc3R1YkluZm8sIHByb3RvdHlwZVN0
cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIGlkZW50
LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQorICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVj
b2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3R1YkluZm8sIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50
LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0QnlJZFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKKyAg
ICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgaml0Lm1f
Ynl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKQEAgLTM1OCw4ICszNzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZXNldFBhdGNoR2V0
QnlJZChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaFB1dEJ5SWQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZv
Kik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2Rl
YmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hHZXRC
eUlkU2VsZihDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9i
YWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFk
ZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTM3NywxMiArMzkxLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlTGlua1Bhc3MoKTsKICAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICBKSVRDb2RlIHByaXZhdGVD
b21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVm
Zm9ydCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJl
U3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOwot
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCk7Ci0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0
dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpOwotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0
cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qLCBzaXplX3QgY291
bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZy
YW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVj
dHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wg
ZGlyZWN0KTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1
cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1
Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hl
ZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpOworICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9w
ZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKKyAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1
Y3R1cmVDaGFpbiosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3Qp
OwogCiAgICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcHJpdmF0ZUNv
bXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRhKiwgVHJhbXBvbGluZVN0cnVj
dHVyZSopOwogICAgICAgICBMYWJlbCBwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwoSlNHbG9i
YWxEYXRhKiwgYm9vbCBpc0NvbnN0cnVjdCA9IGZhbHNlKTsKQEAgLTQzNiw2ICs0NTAsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCkgeyB9
CiAjZW5kaWYKIAorICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtu
b3duTm90RmluYWwgfTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1
bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApAQCAtNDY4LDEwICs0ODQsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsK
ICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQg
YmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgY29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAg
ICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQg
cmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQp
OwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBzaXpl
X3QgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAg
ICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklEIG9mZnNl
dCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAgIHZvaWQgY29tcGlsZVB1
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAg
ICAgIC8vIEFyaXRobWV0aWMgb3Bjb2RlIGhlbHBlcnMKICAgICAgICAgdm9pZCBlbWl0QWRkMzJD
b25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1
bHRUeXBlIG9wVHlwZSk7CkBAIC01NDcsMTAgKzU2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZp
ZXIqKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVn
LCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0aG9kQ2hlY2sgPSBmYWxzZSk7Ci0gICAgICAgIHZv
aWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0LCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0
T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoKTsKLSAgICAgICAgdm9pZCBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCB2YWx1ZSwgc2l6ZV90IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQg
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXRE
aXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJl
Z2lzdGVySUQgc2NyYXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CisgICAgICAg
IHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
dmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAKICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTMyXzY0KQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1l
dGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSwxMSArNDI5LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cgogICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0
b3JJRCgpKSk7CiAKICAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9y
YWdlIHBvaW50ZXIKLSAgICBpZiAoQ2xhc3NUeXBlOjpoYXNJbmxpbmVTdG9yYWdlKCkpIHsKLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0LCBzdG9y
YWdlUHRyKTsKLSAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhyZXN1bHQsIENs
YXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOwotICAgIH0gZWxzZQotICAgICAg
ICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgQ2xhc3NUeXBlOjpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDE2ICs3OTQsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAKICAgICAvLyBW
ZXJpZnkgc3RydWN0dXJlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBy
ZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVzb2x2ZUluZm9BZGRyZXNzKSwgcmVnVDMpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBz
dHJ1Y3R1cmUpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpKTsKIAogICAgIC8vIExvYWQgcHJvcGVydHkuCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1f
cHJvcGVydHlTdG9yYWdlKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgT0JK
RUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMpOwotICAgIGxv
YWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZworICAgIGNvbXBpbGVHZXREaXJl
Y3RPZmZzZXQocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIEtub3duTm90RmluYWwpOwogICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBPUENPREVfTEVOR1RI
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2ds
b2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw5ICs3MDEsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAKICAgICAvLyBMb2Fk
IGNhY2hlZCBwcm9wZXJ0eQogICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IGFs
d2F5cyB1c2VzIGV4dGVybmFsIHN0b3JhZ2UuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSksIHJlZ1Qw
KTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29s
dmVJbmZvLCBvZmZzZXQpKSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHJlZ1QwLCBy
ZWdUMSwgU2NhbGVQdHIpLCByZWdUMCk7CisgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdU
MCwgcmVnVDAsIHJlZ1QxLCByZWdUMCwgS25vd25Ob3RGaW5hbCk7CiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2lu
ZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFTU0VSVChtX2ludGVy
cHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChv
cF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAorICAgICAgICB8fCBt
X2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZSk7CiAgICAgCiAgICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKTsKICAgICAKQEAgLTMzMyw3ICszMzQsNyBAQCB2b2lkIEpJVDo6Y29tcGls
ZUdldEJ5SWRIb3RQYXRoKCkKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAg
ICAgYWRkU2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZWdUMik7Cisg
ICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9IGNvbnZlcnRpYmxl
TG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEgPSBs
b2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdUMiwgcGF0Y2hH
ZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbENv
bXBhY3QgZGlzcGxhY2VtZW50TGFiZWwyID0gbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNl
dFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQpLCByZWdUMSk7
IC8vIHRhZwogICAgIApAQCAtMzQxLDcgKzM0Miw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJ
ZEhvdFBhdGgoKQogICAgIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNl
R2V0QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5h
cHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1f
Ynl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgZGlzcGxhY2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIsIHB1dFJlc3Vs
dCkpOworICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0
LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3Bl
cnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBw
dXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQpAQCAtMzk5LDcgKzQwMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJ
bnN0cnVjdGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkp
KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZSgpKSwgcmVnVDEpOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3Bl
cnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDEpOwogICAgIERhdGFMYWJlbDMy
IGRpc3BsYWNlbWVudExhYmVsMSA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdU
MiwgQWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyBwYXlsb2Fk
CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2VtZW50TGFiZWwyID0gc3RvcmVQdHJXaXRoQWRkcmVz
c09mZnNldFBhdGNoKHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBwYXRjaFB1dEJ5SWREZWZhdWx0T2Zm
c2V0KSk7IC8vIHRhZwogICAgIApAQCAtNDA3LDcgKzQwOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJl
Z1QyLCByZWdUMSwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8u
YXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBt
X2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxh
Y2VtZW50TGFiZWwxLCBkaXNwbGFjZW1lbnRMYWJlbDIpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNz
Q29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVy
dHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVU
b0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxh
Y2VtZW50TGFiZWwyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKQEAgLTQzMCwzMCArNDMxLDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfaWQoSW5zdHJ1Y3QKIH0KIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4KLXZvaWQgSklUOjpjb21w
aWxlUHV0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywg
UmVnaXN0ZXJJRCB2YWx1ZVBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVU
YWcsIFJlZ2lzdGVySUQgdmFsdWVQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
CiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldDsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBl
bWl0U3RvcmUob2Zmc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsKKyAgICBpZiAo
aXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IGVtaXRTdG9yZShpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCksIHZhbHVlVGFnLCB2
YWx1ZVBheWxvYWQsIGJhc2UpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29t
cGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0VGFn
LCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVz
dWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0OworICAgIGlmIChpc0lubGlu
ZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVU
b0Jhc2UoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCBiYXNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBSZWdpc3RlcklEIHRlbXAgPSByZXN1bHRQ
YXlsb2FkOwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKSksIHRlbXApOwotICAgIGVtaXRMb2FkKG9mZnNldCwgcmVzdWx0VGFnLCBy
ZXN1bHRQYXlsb2FkLCB0ZW1wKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgdGVtcCk7CisgICAgZW1pdExvYWQoaW5kZXhS
ZWxhdGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQsIHRl
bXApOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgbG9hZFB0cihiYXNlLT5hZGRyZXNz
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZXN1
bHRUYWcsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZCk7
Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkg
eworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYmFzZS0+bG9jYXRpb25Gb3JPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSksIHJlc3VsdFRhZyk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRh
ZywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5
bG9hZCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgp
LCByZXN1bHRUYWcpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWQpOworICAgIGxvYWQzMihBZGRyZXNzKHJlc3VsdFRhZywgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKGNhY2hlZE9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKK3ZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICAvLyBUaGUgY29kZSBiZWxvdyBh
c3N1bWVzIHRoYXQgcmVnVDAgY29udGFpbnMgdGhlIGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250
YWlucyB0aGUgYmFzZVRhZy4gUmVzdG9yZSB0aGVtIGZyb20gdGhlIHN0YWNrLgogI2lmIENQVShN
SVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNKQpAQCAtNDg5LDcgKzUwMSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAKICAgICAvLyBSZWFsbG9jYXRl
IHByb3BlcnR5IHN0b3JhZ2UgaWYgbmVlZGVkLgogICAgIENhbGwgY2FsbFRhcmdldDsKLSAgICBi
b29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwor
ICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYg
KHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAgLy8gVGhpcyB0cmFtcG9saW5lIHdh
cyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUgd2UgY2FuIGNhbiBjYWxsIGFnYWlu
IHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIHRo
ZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBiZWNvbWluZyBtaXNhbGlnbmVkLgpA
QCAtNDk5LDcgKzUxMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGJhc2UKICAgICAgICAgc3R1
YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1
bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cihu
ZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKQEAgLTU1Myw3
ICs1NjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTYxLDE1ICs1NzMsMTQgQEAgdm9pZCBKSVQ6OnBh
dGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjbwogICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0
byBKSVRTdHViczo6Y3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFu
eXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0Nh
bGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9p
ZF9zZWxmX2ZhaWwpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICog
Y2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2Vy
dHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9y
LgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVU
b0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwxKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsgLy8gcGF5bG9hZAotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwg
b2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcK
KyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRP
ZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNo
ZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsg
Ly8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNh
Y2hlZE9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7IC8v
IHRhZwogfQogCi12b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCkKK3ZvaWQgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgYm9vbCBkaXJlY3QpCiB7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVC
bG9jayk7CiAgICAgCkBAIC01NzcsMTIgKzU4OCwxMSBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlk
UmVwbGFjZShDb2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9w
dXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyBy
aWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dl
bmVyaWMgOiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAKLSAgICBpbnQgb2Zmc2V0
ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9m
ZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUg
U3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQo
c3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNl
dCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxv
YWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1l
bnRMYWJlbDIpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSk7IC8vIHRhZworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUo
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5wdXQucHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zm
c2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+
aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUucHV0LmRpc3BsYWNlbWVudExhYmVsMSksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShjYWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKTsgLy8gcGF5bG9hZAorICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90
UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
cHV0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShj
YWNoZWRPZmZzZXQpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAv
LyB0YWcKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC02MjksNyArNjM5LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0
X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCkBAIC03
MDAsNyArNzEwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgog
fQogCiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90
IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEg
SlNDZWxsKgogICAgIEp1bXAgZmFpbHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3Ry
dWN0dXJlKTsKQEAgLTc2MCw3ICs3NzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QoCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2Rl
TG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1
cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGlu
dCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICAKQEAgLTgyOSw3ICs4MzksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5j
b2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdU
MCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwpAQCAtOTA0LDcgKzkxNCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNv
ZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hh
aW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQo
Y291bnQpOwpAQCAtOTc1LDEzICs5ODUsMjcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihy
ZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsK
IH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdpc3RlcklE
IG9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0
ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9iamVjdE1vZGUpCiB7CiAgICAgQVNT
RVJUKHNpemVvZihKU1ZhbHVlKSA9PSA4KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFz
ZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAgICBsb2Fk
UHRyKEJhc2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWRQdHIo
QmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOworICAgIGlmIChmaW5hbE9iamVjdE1vZGUg
PT0gTWF5QmVGaW5hbCkgeworICAgICAgICBKdW1wIGlzSW5saW5lID0gYnJhbmNoMzIoTGVzc1Ro
YW4sIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpOworICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgYmFzZSk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgaXNJbmxp
bmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksIGJhc2UpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgIH0KKyAgICBs
b2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHJlc3VsdFBheWxvYWQpOworICAgIGxvYWQzMihCYXNlSW5k
ZXgoYmFzZSwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMudGFnKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCByZXN1bHRUYWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMDYsNiArMTAzMCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAgICBsb2FkMzIoYWRkcmVzc0Zv
cihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3Rz
KSkpKTsKKyAgICBhZGQzMihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciwgbV9vZmZzZXRCYXNlKSksIHJlZ1QzKTsKICAgICBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KHJlZ1QyLCByZWdUMSwgcmVnVDAsIHJlZ1QzKTsgICAgCiAgICAgCiAgICAgZW1p
dFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDEwICsxNTEsMjYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
SW5zdHJ1YwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0KIAotdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
UmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpjb21waWxl
R2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZpbmFsT2JqZWN0TW9kZSBmaW5hbE9i
amVjdE1vZGUpCiB7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgc2NyYXRjaCk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoc2Ny
YXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgMCksIHJlc3VsdCk7CisgICAgQVNTRVJUKHNpemVvZihK
U1ZhbHVlKSA9PSA4KTsKKyAgICAKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmlu
YWwpIHsKKyAgICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQs
IFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0
Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmso
dGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsgaW5saW5lU3RvcmFnZUNhcGFjaXR5ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSksIGJhc2UsIHNjcmF0Y2gpOworICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfSBl
bHNlIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBi
cmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGlubGluZVN0
b3JhZ2VDYXBhY2l0eSkpOworICAgICAgICBicmVha3BvaW50KCk7CisgICAgICAgIGlzT3V0T2ZM
aW5lLmxpbmsodGhpcyk7CisjZW5kaWYKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2gpOworICAgIH0KKyAg
ICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBvZmZzZXQsIFNjYWxlUHRyLCAtaW5saW5lU3Rv
cmFnZUNhcGFjaXR5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoSlNWYWx1ZSkpKSwg
cmVzdWx0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yODMsNyArMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfbWV0aG9kX2NoZWNr
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQg
dGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAgICBBU1NFUlQobV9p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5H
VEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgIEFT
U0VSVChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BD
T0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAor
ICAgICAgICB8fCBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9u
ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9i
eV9pZF9vdXRfb2ZfbGluZSk7CiAKICAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xF
TkdUSChvcF9tZXRob2RfY2hlY2spOwogICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMzczLDE0ICszOTAsMTQgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVHZXRCeUlkSG90UGF0aChpbnQgYmFzZQogICAgIFBhdGNoYWJsZUp1bXAgc3RydWN0
dXJlQ2hlY2sgPSBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRy
dXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0
cnVjdHVyZSkpKTsKICAgICBhZGRTbG93Q2FzZShzdHJ1Y3R1cmVDaGVjayk7CiAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVnVDApOworICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBj
b252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZM
aW5lU3RvcmFnZSgpKSwgcmVnVDApOwogICAgIERhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50
TGFiZWwgPSBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyhyZWdU
MCwgcGF0Y2hHZXRCeUlkRGVmYXVsdE9mZnNldCksIHJlZ1QwKTsKIAogICAgIExhYmVsIHB1dFJl
c3VsdCh0aGlzKTsKIAogICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0
QnlJZEhvdFBhdGgpOwogCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBl
bmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YkdldEJ5SWQsIG1fYnl0
ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgZGlzcGxhY2VtZW50TGFiZWwsIHB1dFJlc3VsdCkpOworICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9w
ZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNl
bWVudExhYmVsLCBwdXRSZXN1bHQpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNDQwLDE0ICs0NTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIERhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJl
LCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1
bHRTdHJ1Y3R1cmUpKSkpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QyKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRM
YWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1QyKTsKICAgICBE
YXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbCA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQ
YXRjaChyZWdUMSwgQWRkcmVzcyhyZWdUMiwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOwog
CiAgICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIAogICAg
IGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIFNob3VsZEZpbHRl
ckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAotICAgIG1fcHJv
cGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBpbGF0aW9u
SW5mbyhQcm9wZXJ0eVN0dWJQdXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRoQmVnaW4s
IHN0cnVjdHVyZVRvQ29tcGFyZSwgZGlzcGxhY2VtZW50TGFiZWwpKTsKKyAgICBtX3Byb3BlcnR5
QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8o
UHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHByb3BlcnR5U3RvcmFnZUxvYWQsIGRpc3BsYWNlbWVudExhYmVsKSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAg
LTQ3MSwyOCArNDg4LDQxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1
Y3QKIAogLy8gQ29tcGlsZSBhIHN0b3JlIGludG8gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZS4gIE1heSBvdmVyd3JpdGUgdGhlCiAvLyB2YWx1ZSBpbiBvYmplY3RSZWcuCi12b2lkIEpJVDo6
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUs
IHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCkKIHsKLSAgICBpbnQgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIGJhc2UpOwotICAgIHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIG9mZnNl
dCkpOworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIHN0
b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3Jh
Z2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShjYWNoZWRPZmZz
ZXQpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAg
IHN0b3JlUHRyKHZhbHVlLCBBZGRyZXNzKGJhc2UsIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQpKSk7CiB9CiAKIC8vIENvbXBpbGUgYSBsb2Fk
IGZyb20gYW4gb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZS4gIE1heSBvdmVyd3JpdGUgYmFzZS4K
LXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9mZnNldCA9IGNhY2hlZE9mZnNldCAqIHNp
emVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCByZXN1bHQpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1
bHQsIG9mZnNldCksIHJlc3VsdCk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNl
dCkpIHsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSArIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldEluSW5saW5lU3RvcmFnZShj
YWNoZWRPZmZzZXQpKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFn
ZSgpKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBzaXplb2YoSlNWYWx1
ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3VsdCk7CiB9
CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdp
c3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgSklUOjpjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVy
dHlTdG9yYWdlKCksIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgY2FjaGVk
T2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCByZXN1bHQpOworICAgIGlm
IChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQdHIoYmFzZS0+
bG9jYXRpb25Gb3JPZmZzZXQoY2FjaGVkT2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3Jh
Z2UoKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
b24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNo
YWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkK
K3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBK
dW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0
aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAtNTIyLDcgKzU1Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAgIAogICAgIC8vIGVtaXQgYSBjYWxs
IG9ubHkgaWYgc3RvcmFnZSByZWFsbG9jIGlzIG5lZWRlZAotICAgIGJvb2wgd2lsbE5lZWRTdG9y
YWdlUmVhbGxvYyA9IG9sZFN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBu
ZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgYm9vbCB3aWxsTmVl
ZFN0b3JhZ2VSZWFsbG9jID0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG5l
d1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAod2lsbE5lZWRTdG9yYWdl
UmVhbGxvYykgewogICAgICAgICAvLyBUaGlzIHRyYW1wb2xpbmUgd2FzIGNhbGxlZCB0byBsaWtl
IGEgSklUIHN0dWI7IGJlZm9yZSB3ZSBjYW4gY2FuIGNhbGwgYWdhaW4gd2UgbmVlZCB0bwogICAg
ICAgICAvLyByZW1vdmUgdGhlIHJldHVybiBhZGRyZXNzIGZyb20gdGhlIHN0YWNrLCB0byBwcmV2
ZW50IHRoZSBzdGFjayBmcm9tIGJlY29taW5nIG1pc2FsaWduZWQuCkBAIC01MzIsNyArNTYyLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHVi
Q2FsbC5za2lwQXJndW1lbnQoKTsgLy8gYmFzZQogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1l
bnQoKTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVl
Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkpOwogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkpOwog
ICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJBcmco
MiwgcmVnVDEpOwpAQCAtNTcyLDcgKzYwMiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW8KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGlu
ZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUu
Y29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2
b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgUmVw
YXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAKQEAgLTU4MCwxNCArNjEwLDEz
IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY28KICAgICAvLyBTaG91
bGQgcHJvYmFibHkgZ28gdG8gY3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0
IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KICAgICByZXBhdGNoQnVmZmVyLnJl
bGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dl
dF9ieV9pZF9zZWxmX2ZhaWwpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNWYWx1ZSkg
KiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3Bv
ZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8gbG9vayBm
b3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0
YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVy
ZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldCk7CisgICAgcmVwYXRj
aEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2lu
LmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5w
cm9wZXJ0eVN0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7Cisg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1l
bnRMYWJlbCksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsK
IH0KIAotdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJl
Y3QpCit2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2sp
OwogCkBAIC01OTUsMTEgKzYyNCwxMCBAQCB2b2lkIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShD
b2RlQmxvY2sqCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRf
ZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyByaWdodCBub3cu
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3Ms
IEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMgOiBj
dGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKIAotICAgIGludCBvZmZzZXQgPSBzaXplb2YoSlNW
YWx1ZSkgKiBjYWNoZWRPZmZzZXQ7Ci0KICAgICAvLyBQYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhl
IHByb3BvZXJ0eSBtYXAgdG8gbG9hZCBmcm9tLCB0aGVuIHBhdGNoIHRoZSBTdHJ1Y3R1cmUgdG8g
bG9vayBmb3IuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0
cnVjdHVyZVRvQ29tcGFyZSksIHN0cnVjdHVyZSk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby0+cGF0
Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0
Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQu
cHJvcGVydHlTdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOwor
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJl
bDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRpc3BsYWNlbWVudExh
YmVsKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKGNhY2hlZE9mZnNldCkpOwogfQog
CiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTY0Myw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJU
b0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfYXJy
YXlfZmFpbCkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9m
ZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0ZWx5IGV4aXN0cyAoaWYg
dGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5jaW5nIGEgU3RydWN0dXJl
IHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdz
IHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVhcmx5ISkKQEAgLTcxMCw3
ICs3MzgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0
aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCkKIHsKICAgICBKdW1wIGZhaWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVn
VDAsIHN0cnVjdHVyZSk7CiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CkBAIC03NzAs
NyArNzk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1
YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHByb3Rv
dHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENv
ZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVmZXJl
bmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQn
cyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC04MzksNyArODY3LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1
bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkNvZGUuY29kZSgpKSk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90
b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKICAgICBKdW1w
TGlzdCBidWNrZXRzT2ZGYWlsOwpAQCAtOTE0LDcgKzk0Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBBU1NFUlQoY291bnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NCw3ICs5NTQsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3VudCA9IG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCks
IHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAoIWNvdW50KSB7CiAgICAgICAgIHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9nZW5lcmljOwpAQCAtMTQ4NiwxMyAr
MTQ4NiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIGlu
dDMyX3Qgb2xkU2l6ZSA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigpOwogICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gc3RhY2tGcmFtZS5hcmdzWzRdLnN0cnVjdHVyZSgpOwotICAgIGlu
dDMyX3QgbmV3U2l6ZSA9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
KyAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7
CisgICAgCisgICAgQVNTRVJUKG9sZFNpemUgPj0gMCk7CisgICAgQVNTRVJUKG5ld1NpemUgPiBv
bGRTaXplKTsKIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmpl
Y3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9ICpzdGFja0ZyYW1lLmdsb2JhbERhdGE7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0
b3JhZ2UgPSBiYXNlLT5ncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5l
d1NpemUpOwotICAgIGJhc2UtPnNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9y
YWdlLCBuZXdTdHJ1Y3R1cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFz
ZS0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7Cisg
ICAgYmFzZS0+c2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdT
dHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC0xODE0LDcgKzE4MTcsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKHNsb3Qu
c2xvdEJhc2UoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3QgPSBh
c09iamVjdChzbG90LnNsb3RCYXNlKCkpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAKICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkKICAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQURE
UkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19mYWlsKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw3ICs4OTUsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewogICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlf
aWQpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtOTQwLDcgKzk0Niw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAg
ICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0
aG9kcyB3ZSBjYWxsCkBAIC05NTIsNyArOTU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xv
dC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNo
YWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKQEAgLTk2MCwxNiArOTY5LDI4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAgICAg
ICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CiAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVy
YW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkKTsKICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZz
ZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC05MTksNiArOTE5LDI0IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlz
cGF0Y2goMykKIAogCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RG
aW5hbChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXlsb2FkKQorICAg
IGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwgSW5saW5lU3RvcmFnZUNh
cGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtv
YmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxvYWRpIFRhZ09mZnNldCAt
IDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZz
ZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VD
YXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2Vu
ZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0LCBv
YmplY3RBbmRTdG9yYWdlLCB0YWcsIHBheWxvYWQpCisgICAgYmlsdCBwcm9wZXJ0eU9mZnNldCwg
SW5saW5lU3RvcmFnZUNhcGFjaXR5LCAuaXNJbmxpbmUKKyAgICBsb2FkcCBKU09iamVjdDo6bV9v
dXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRTdG9yYWdlCisgICAg
am1wIC5yZWFkeQorLmlzSW5saW5lOgorICAgIGFkZHAgSlNGaW5hbE9iamVjdDo6bV9pbmxpbmVT
dG9yYWdlICsgSW5saW5lU3RvcmFnZUNhcGFjaXR5ICogOCwgb2JqZWN0QW5kU3RvcmFnZQorLnJl
YWR5OgorICAgIGxvYWRpIFRhZ09mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2Jq
ZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0IC0gOCAqIElubGluZVN0b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9w
ZXJ0eU9mZnNldCwgOF0sIHBheWxvYWQKK2VuZAorCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUs
IHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtOTMwLDkgKzk0OCw3IEBAIG1hY3JvIHJlc29sdmVH
bG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
ICAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CiAgICAgbG9hZGkgMTZbUENdLCB0MQotICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0
MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRLbm93bk5vdEZpbmFsKHQxLCB0MCwg
dDIsIHQzKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0x
MDg3LDMxICsxMTAzLDQ0IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBk
aXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6CisjIFdlIG9ubHkgZG8gbW9ub21v
cnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhl
CisjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdl
IGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0
IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisjIHRvIHRha2Ug
ZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3
aGljaCBpcyB3aGF0CisjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisKK21hY3Jv
IGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAj
IFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdl
IGRvIG5vdCBtb2RpZnkgdGhlCi0gICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBm
b3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQotICAgICMgcGlu
Zy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lk
IHdpbGwgY29udGludWUKLSAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUu
IEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0Ci0gICAgIyB3ZSB3b3Vs
ZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRp
IDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDIKLSAgICBsb2FkcCBK
U09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAotICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICBsb2FkaSA0W1BDXSwgdDEKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Qw
LCB0Ml0sIHQyCi0gICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBsb2FkaSAzMltQQ10sIHQxCi0g
ICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9w
ZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAgICB0MCwKKyAgICAgICAgbWFjcm8gKHBy
b3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0
MQorICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3Jh
dGNoCisgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJd
LCB0MgorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAg
ICAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwg
dDIsIHQxKQorICAgICAgICAgICAgZGlzcGF0Y2goOSkKKyAgICAgICAgZW5kKQorCisgICAgLm9w
R2V0QnlJZFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9i
eV9pZCkKKyAgICAgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgor
ICAgIGdldEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKLS5vcEdldEJ5SWRTbG93OgotICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRjaCg5KQor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgorICAgIGdldEJ5SWQod2l0aE91dE9m
TGluZVN0b3JhZ2UpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMTEz
MCw2OCArMTE1OSw5NiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlz
cGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9w
ZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0Mwog
ICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaSAyMFtQ
Q10sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKLSAgICB3
cml0ZUJhcnJpZXIodDAsIHQyKQotICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KLSAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAg
Z2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1h
Y3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSAy
MFtQQ10sIHQxCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwgc2Ny
YXRjaCwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIpCisgICAgICAg
ICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAg
ICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAg
ICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0
X2J5X2lkOgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNw
YXRjaCg5KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitf
bGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGlu
ZVN0b3JhZ2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywg
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BD
XSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10s
IHQyCiAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dwotICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRp
dGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQxCi0gICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBhZGRwIHQxLCB0MwotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQx
LCB0MikKLSAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KLSAgICBsb2FkaSAyNFtQQ10sIHQx
Ci0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgIHN0b3JlcCB0MSwgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFn
ZSgKKyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9y
YWdlLCBzY3JhdGNoKQorICAgICAgICAgICAgYWRkcCB0MSwgcHJvcGVydHlTdG9yYWdlLCB0Mwor
ICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICAg
ICAgICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFt0M10KKyAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICAgICAgICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2Vu
ZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQorZW5k
CisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKKyAg
ICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisKKyAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJpZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorLmxvb3A6
CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0Nl
bGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisuZG9u
ZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9y
YWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xp
bmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZM
aW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgot
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3Jh
dGNoLCBzbG93KQotICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
IyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAg
ICAKLSAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3Ry
dWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBiaWVxIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywg
LmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICAgICAg
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCi0g
ICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdwotICAgICAgICAg
ICAgYWRkcCA0LCBzY3JhdGNoCi0gICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCi0gICAgICAgIC5k
b25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJlQ2hhaW5D
aGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3RydWN0dXJl
Q2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYnlf
dmFsOgpAQCAtMTI2MSw5ICsxMzE4LDggQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBs
b2FkaSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIGJpYWVxIHQwLCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgotICAg
IGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDIsIHQwLCA4XSwgdDMKKyAgICBhZGRpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0
QmFzZVt0M10sIHQwCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MCwgdDIsIHQx
LCB0MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNiArNzc4
LDIyIEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgZGlzcGF0Y2goMykKIAogCittYWNybyBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbChwcm9wZXJ0eU9mZnNldCwg
b2JqZWN0QW5kU3RvcmFnZSwgdmFsdWUpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHBy
b3BlcnR5T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIG9rIGVuZCkKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9vdXRPZkxpbmVTdG9yYWdlW29iamVjdEFuZFN0b3JhZ2VdLCBvYmplY3RBbmRT
dG9yYWdlCisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKK21hY3JvIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXQocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZhbHVl
KQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgLmlzSW5s
aW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3RBbmRTdG9y
YWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5pc0lubGluZToKKyAgICBh
ZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGluZVN0b3JhZ2VDYXBhY2l0
eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2FkcCAtOCAqIElubGluZVN0
b3JhZ2VDYXBhY2l0eVtvYmplY3RBbmRTdG9yYWdlLCBwcm9wZXJ0eU9mZnNldCwgOF0sIHZhbHVl
CitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFuZHMg
YXJlIGFzIGZvbGxvd3M6CiAgICAgIyA4W1BCLCBQQywgOF0gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCkBAIC03ODksOCArODA1LDcgQEAgbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93
KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQogICAgIGJwbmVxIHQxLCAy
NFtQQiwgUEMsIDhdLCBzbG93CiAgICAgbG9hZGlzIDMyW1BCLCBQQywgOF0sIHQxCi0gICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQx
LCA4XSwgdDIKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAg
ICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBzdG9yZXAgdDIsIFtjZnIsIHQwLCA4XQog
ICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQwCkBAIC05MzcsNyArOTUyLDcg
QEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGRpc3BhdGNoKDUpCiAKIAot
X2xsaW50X29wX2dldF9ieV9pZDoKK21hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5
X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCiAgICAgIyBvcGNv
ZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1l
IGlmIGZhaWxzLCBzaW5jZQpAQCAtOTQ4LDE4ICs5NjMsMzAgQEAgX2xsaW50X29wX2dldF9ieV9p
ZDoKICAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDQwW1BCLCBQQywgOF0s
IHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKLSAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9h
ZGlzIDhbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBbdDAsIHQyXSwgdDMKLSAgICBzdG9yZXAg
dDMsIFtjZnIsIHQxLCA4XQotICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCi0gICAgdmFsdWVQ
cm9maWxlKHQzLCB0MSkKLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
KyAgICAgICAgdDMsCisgICAgICAgIHQwLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKKyAg
ICAgICAgICAgIGxvYWRwIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAg
ICAgc3RvcmVwIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZHAgNjRbUEIs
IFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZShzY3JhdGNoLCB0MSkKKyAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKyAgICAgICAgICAgIAorICAgIC5vcEdl
dEJ5SWRTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
aWQpCisgICAgICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAg
ICBnZXRCeUlkKHdpdGhJbmxpbmVTdG9yYWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxp
bmVTdG9yYWdlKQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTk3OCw2
NSArMTAwNSw5MyBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiAgICAgZGlzcGF0
Y2goNCkKIAogCi1fbGxpbnRfb3BfcHV0X2J5X2lkOgorbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0s
IHQzCiAgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhd
LCB0MgotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGxv
YWRpcyA0MFtQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQw
KQotICAgIHdyaXRlQmFycmllcih0MCkKLSAgICBzdG9yZXAgdDAsIFt0MywgdDFdCi0gICAgZGlz
cGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0
MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAg
ICAgICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKKyAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKKyAg
ICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KKyAgICAgICAg
ICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lk
OgorICAgIHB1dEJ5SWQod2l0aElubGluZVN0b3JhZ2UpCiAKIC5vcFB1dEJ5SWRTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBkaXNwYXRjaCg5
KQogCiAKLW1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCitfbGxpbnRf
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWQod2l0aE91dE9mTGluZVN0b3Jh
Z2UpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcywgZ2V0UHJv
cGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MwogICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBD
LCA4XSwgdDIKICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAg
IGFkZGl0aW9uYWxDaGVja3ModDEsIHQzKQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MQot
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0
MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKLSAgICB3cml0ZUJhcnJp
ZXIodDEpCi0gICAgc3RvcmVwIHQxLCBbdDNdCi0gICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEK
LSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0gICAgZGlzcGF0Y2goOSkK
KyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywKKyAgICAg
ICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGFkZHAgdDEs
IHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxKQorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQorICAgICAgICAgICAgc3RvcmVw
IHQxLCBbdDNdCisgICAgICAgICAgICBsb2FkcCA0OFtQQiwgUEMsIDhdLCB0MQorICAgICAgICAg
ICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgZGlzcGF0
Y2goOSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gpCitlbmQKKworbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xk
U3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAg
ICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAg
bG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56
IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2Ny
YXRjaF0sIHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVl
TnVsbCwgLmRvbmUKKy5sb29wOgorICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90
b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICBhZGRwIDgsIHNjcmF0Y2gKKyAgICBicG5lcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKKy5kb25lOgogZW5k
CiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgcHV0QnlJZFRy
YW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aElubGluZVN0b3JhZ2UpCisK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbihub0FkZGl0aW9uYWxDaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9y
YWdlKQogCiAKIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgcHV0
QnlJZFRyYW5zaXRpb24oCi0gICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNs
b3cpCi0gICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVz
aW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwotICAgICAgICAgICAg
bG9hZHAgNTZbUEIsIFBDLCA4XSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChv
aykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgICAgICAgICBhc3NlcnQobWFjcm8g
KG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCi0gICAgICAgICAgICBicGVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQotICAgICAgICAubG9v
cDoKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJl
XSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3Rv
Q2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgOCwgc2NyYXRjaAotICAgICAgICAgICAgYnBu
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29w
Ci0gICAgICAgIC5kb25lOgotICAgICAgICBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRpb24oc3Ry
dWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24oc3RydWN0dXJlQ2hhaW5DaGVja3MsIHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9sbGlu
dF9vcF9nZXRfYnlfdmFsOgpAQCAtMTEwNiw4ICsxMTYxLDggQEAgX2xsaW50X29wX2dldF9ieV9w
bmFtZToKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwogICAgIHN1Ymkg
MSwgdDMKICAgICBiaWFlcSB0MywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFi
bGVTbG90c1t0MV0sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDAKLSAgICBsb2FkcCBbdDAsIHQzLCA4XSwgdDAKKyAgICBhZGRp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fb2Zmc2V0QmFzZVt0MV0sIHQzCisgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQwKQogICAgIGxvYWRpcyA4W1BCLCBQQywg
OF0sIHQxCiAgICAgc3RvcmVwIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCg3KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBA
QCBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhCiAjIFN0cmluZyBmbGFn
cy4KIGNvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAogCisjIFByb3BlcnR5IHN0b3JhZ2Ug
Y29uc3RhbnRzCitpZiBKU1ZBTFVFNjQKKyAgICBjb25zdCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkg
PSA0CitlbHNlCisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gNgorZW5kCisKICMg
QWxsb2NhdGlvbiBjb25zdGFudHMKIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCA9IDEKQEAgLTMxMiw4ICszMTksNyBAQCBtYWNybyBhbGxvY2F0ZUJh
c2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kCiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3Vs
dF0KICAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRd
CiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCi0gICAg
ICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN0b3Jl
cCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICAgICAg
c3RvcmVwIDAsIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2VbcmVzdWx0XQogICAgIGVuZAog
ZW5kCiAKQEAgLTQ4MSw2ICs0ODcsMjEgQEAgX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgog
ICAgIGRpc3BhdGNoKDUpCiAKIAorbWFjcm8gd2l0aElubGluZVN0b3JhZ2Uob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIG9iamVj
dCBpcyB0aGUgcHJvcGVydHkgc3RvcmFnZSwgYW5kIHRoYXQgdGhlCisgICAgIyBwcm9wZXJ0eSBz
dG9yYWdlIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICBjb250aW51YXRpb24ob2JqZWN0LCBwcm9w
ZXJ0eVN0b3JhZ2UpCitlbmQKKworbWFjcm8gd2l0aE91dE9mTGluZVN0b3JhZ2Uob2JqZWN0LCBw
cm9wZXJ0eVN0b3JhZ2UsIGNvbnRpbnVhdGlvbikKKyAgICBsb2FkcCBKU09iamVjdDo6bV9vdXRP
ZkxpbmVTdG9yYWdlW29iamVjdF0sIHByb3BlcnR5U3RvcmFnZQorICAgICMgSW5kaWNhdGUgdGhh
dCB0aGUgcHJvcGVydHlTdG9yYWdlIHJlZ2lzdGVyIG5vdyBwb2ludHMgdG8gdGhlCisgICAgIyBw
cm9wZXJ0eSBzdG9yYWdlLCBhbmQgdGhhdCB0aGUgb2JqZWN0IHJlZ2lzdGVyIG1heSBiZSByZXVz
ZWQKKyAgICAjIGlmIHRoZSBvYmplY3QgcG9pbnRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisg
ICAgY29udGludWF0aW9uKHByb3BlcnR5U3RvcmFnZSwgb2JqZWN0KQorZW5kCisKKwogX2xsaW50
X29wX2RlbF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfZGVsX2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDExIEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGhhbmRsZVg4NkFkZChraW5k
KQotICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICBpZiBvcGVy
YW5kc1swXS52YWx1ZSA9PSAwCkBAIC01NjgsNyArNTcyLDExIEBAIGNsYXNzIEluc3RydWN0aW9u
CiAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
UmVnaXN0ZXJJRAogICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECi0gICAgICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAoI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBpZiBv
cGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRk
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0K
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAje3g4Nk9w
ZXJhbmRzKGtpbmQsIGtpbmQpfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMy
LDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZTsKLSAgICAgICAgc2l6ZV90IG1fZnVuY3Rpb25O
YW1lT2Zmc2V0OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmU7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlOwpAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAg
ICAgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIHNpemVfdCBmdW5jdGlvbk5h
bWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQorICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uTmFtZU9mZnNldDsgfQogICAgICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogcHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVOYW1lU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogaW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywyNCArOTMsNTQgQEAgdm9p
ZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAgIGJvb2wgd2FzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCisgICAgCisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0
aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3JhZ2UpIHsKKyAgICAg
ICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGlu
ZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCk7CisgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBl
eHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhv
c2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgorICAgICAgICB2b2lkKiB0
ZW1wID0gc3RvcmFnZTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0ZW1wLCB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9yYWdlU2l6ZSk7CisgICAg
ICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRlbXApOworICAgICAg
ICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJy
aWVyOjpVbmNoZWNrZWQpOworICAgIH0KKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2luaGVyaXRv
cklEKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCk7
CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247Cisj
ZW5kaWYKK30KKwordm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNGaW5hbE9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0ZpbmFsT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
Ym9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICBQcm9wZXJ0eVN0b3Jh
Z2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgpOwotICAgIHNpemVfdCBz
dG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBlbHNlIHsK
KyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHRoaXNPYmplY3QtPm91dE9mTGluZVN0b3Jh
Z2UoKTsKKyAgICBpZiAoc3RvcmFnZSkgeworICAgICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3Qo
KTsKICAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGV4dHJhIHRlbXAgaGVyZSB0byBzbGFrZSBHQ0Mn
cyB0aGlyc3QgZm9yIHRoZSBibG9vZCBvZiB0aG9zZSB3aG8gZGVyZWZlcmVuY2UgdHlwZS1wdW5u
ZWQgcG9pbnRlcnMuCiAgICAgICAgIHZvaWQqIHRlbXAgPSBzdG9yYWdlOwotICAgICAgICB2aXNp
dG9yLmNvcHlBbmRBcHBlbmQoJnRlbXAsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pLCBz
dG9yYWdlLT5zbG90KCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBw
ZW5kKCZ0ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9y
YWdlU2l6ZSk7CiAgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+
KHRlbXApOwotICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5U3RvcmFnZS5zZXQoc3RvcmFn
ZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1fb3V0
T2ZMaW5lU3RvcmFnZS5zZXQoc3RvcmFnZSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CiAg
ICAgfQogCiAgICAgaWYgKHRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpCiAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEKTsKIAorICAgIHNpemVfdCBzdG9y
YWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplRm9yS25vd25GaW5h
bE9iamVjdCgpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0
b3JhZ2UoKSwgc3RvcmFnZVNpemUpOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpc2l0
b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uOwogI2VuZGlmCkBAIC0xNTMsOCArMTgzLDggQEAgdm9pZCBKU09i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9
IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAg
IHNpemVfdCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKG9mZnNldCAh
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+
c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKSk7CkBAIC0yNzIsNyArMzAyLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZQogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNw
ZWNpZmljVmFsdWU7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSkpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRl
ICYmICFleGVjLT5nbG9iYWxEYXRhKCkuaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CkBAIC0zOTQsNyArNDI0LDcgQEAgYm9vbCBK
U09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlYwogYm9vbCBKU09iamVjdDo6Z2V0UHJv
cGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKQor
ICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBz
dGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC01MTYsMjAgKzU0NiwyMCBAQCB2b2lk
IEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJl
bW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKSA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBzaXplX3Qgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBp
ZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5k
KQorICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90
Rm91bmQpCisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU1OSwyNSArNTg5LDIyIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNyZWF0
ZUluaGVyaXRvcklEKEoKICAgICByZXR1cm4gbV9pbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotUHJv
cGVydHlTdG9yYWdlIEpTT2JqZWN0Ojpncm93UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQorUHJvcGVydHlTdG9y
YWdlIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6
ZSA+IG9sZFNpemUpOwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9u
IG5vdCByZWx5IG9uIHN0cnVjdHVyZSgpLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRo
ZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9uLgogCi0gICAgUHJvcGVydHlTdG9yYWdlIG9sZFByb3Bl
cnR5U3RvcmFnZSA9IG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOworICAgIFByb3BlcnR5U3RvcmFn
ZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX291dE9mTGluZVN0b3JhZ2UuZ2V0KCk7CiAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CiAKLSAgICBpZiAoaXNVc2luZ0lu
bGluZVN0b3JhZ2UoKSkgeworICAgIGlmICghb2xkUHJvcGVydHlTdG9yYWdlKSB7CiAgICAgICAg
IC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZv
ciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJz
LgogICAgICAgICB2b2lkKiB0ZW1wID0gbmV3UHJvcGVydHlTdG9yYWdlOwogICAgICAgICBpZiAo
IWdsb2JhbERhdGEuaGVhcC50cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pICogbmV3U2l6ZSwgJnRlbXApKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0
ZW1wKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKQot
ICAgICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ld
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUg
dG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxvb2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJl
bmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAgICB2b2lkKiB0ZW1wID0gb2xkUHJvcGVy
dHlTdG9yYWdlOwpAQCAtNTk0LDggKzYyMSw4IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0Nl
bGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5n
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOwot
ICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIGNlbGwpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihv
YmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKICAgICByZXR1cm4g
dHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0
ZXIKICAgICB9OwogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZpbmUgSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgNgotI2Vsc2UKLSNkZWZpbmUgSlNGaW5hbE9iamVjdF9p
bmxpbmVTdG9yYWdlQ2FwYWNpdHkgNAotI2VuZGlmCi0KLUNPTVBJTEVfQVNTRVJUKChKU0ZpbmFs
T2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSAwKSwgZmluYWxfc3RvcmFnZV9ub25fbmVn
YXRpdmUpOworICAgIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKU0NlbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGZyaWVu
ZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRy
eSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIApAQCAtMTY5LDI2
ICsxNjQsNzIgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAu
CiAgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERpcmVjdE9m
ZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkp
OworICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0
T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAg
ewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOworICAgICAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zm
c2V0KSA6IDA7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3Qgb2Zmc2V0Rm9yTG9jYXRpb24o
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pIGNvbnN0CisgICAgICAgIGJvb2wg
aGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNJbmxpbmVT
dG9yYWdlKCk7IH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVu
c2FmZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBsb2NhdGlvbiAtIHByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsKKyAgICAgICAgfQorICAg
ICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKGhhc0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOworICAgICAgICB9CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGhh
c0lubGluZVN0b3JhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2Fm
ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBv
dXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgp
OyB9CisgICAgICAgIFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgeyByZXR1cm4g
bV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOyB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0
b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtv
ZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZz
ZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNldEluSW5s
aW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFn
ZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsKKyAgICAgICAgfQorCisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCByZXN1bHQ7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlID0g
bG9jYXRpb24gLSBpbmxpbmVTdG9yYWdlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0
SW5JbmxpbmVTdG9yYWdlIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmxpbmVTdG9yYWdlQ2FwYWNp
dHkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNldEluSW5saW5lU3RvcmFnZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAtIG91dE9m
TGluZVN0b3JhZ2UoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgICAgICAgICAgdmFsaWRh
dGVPZmZzZXQocmVzdWx0LCBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlv
blRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMjA1LDkgKzI0Niw5IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgYm9vbCBwdXRPd25E
YXRhUHJvcGVydHkoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBrbm93biBwcm9wZXJ0eSBv
ZmZzZXRzLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBj
b25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9Ci0gICAgICAg
IHZvaWQgcHV0RGlyZWN0T2Zmc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG9m
ZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldChnbG9i
YWxEYXRhLCB0aGlzLCB2YWx1ZSk7IH0KLSAgICAgICAgdm9pZCBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0VW5k
ZWZpbmVkKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQo
KTsgfQorICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBsb2NhdGlvbkZvck9m
ZnNldChvZmZzZXQpLT5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIHZv
aWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogCkBAIC0yMjgsMjQgKzI2OSwxNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAg
dm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBncm93UHJvcGVydHlTdG9y
YWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAg
ICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBib29sIHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgIW1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpCi0gICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOwot
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBzdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0
b3JhZ2UoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAg
IHZvaWQgc2V0UHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwg
U3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5U3RvcmFnZSBn
cm93T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90
IG5ld1NpemUpOworICAgICAgICB2b2lkIHNldE91dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlTdG9yYWdlLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
cmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRD
YXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBvbGRDYXBhY2l0
eSwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2
b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICB2b2lkKiBhZGRyZXNzT2ZP
dXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX3Byb3Bl
cnR5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiAmbV9vdXRPZkxpbmVTdG9yYWdlOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCkBAIC0yNjEsNyArMjk0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0
b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CkBAIC0yNzEsNyArMzA0LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3Rf
aW5saW5lU3RvcgogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOworICAg
ICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBU1NF
UlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFw
KHByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzT2JqZWN0
KCkpOwpAQCAtMjg3LDcgKzMyMCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkg
d2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQg
dHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBK
U09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwog
ICAgICAgICAKICAgICAgICAgdm9pZCByZXNldEluaGVyaXRvcklEKCkKICAgICAgICAgewpAQCAt
MzA1LDE5ICszMzgsNiBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9y
CiAgICAgICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICAgICAgdm9pZCBpc1N0cmluZygpOwogICAg
ICAgICAKLSAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KLSAgICAgICAgUHJvcGVydHlT
dG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgp
OyB9Ci0KLSAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25G
b3JPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdOwotICAgICAgICB9Ci0KLSAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoc2l6ZV90IG9mZnNldCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRd
OwotICAgICAgICB9Ci0KICAgICAgICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgICAgICAgYm9vbCBw
dXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCkBAIC0zMjcsNyArMzQ3
LDcgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xv
YmFsRGF0YSYpOwogCi0gICAgICAgIFN0b3JhZ2VCYXJyaWVyIG1fcHJvcGVydHlTdG9yYWdlOwor
ICAgICAgICBTdG9yYWdlQmFycmllciBtX291dE9mTGluZVN0b3JhZ2U7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJpdG9ySUQ7CiAgICAgfTsKIApAQCAtMzUzLDE0ICsz
NzMsMTQgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBB
U1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogICAgIH07
CkBAIC0zODEsNiArNDAxLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
ICAgICBzdGF0aWMgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkKQEAgLTM4OCwxMSArNDEwLDE0IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHZpc2l0
Q2hpbGRyZW5Db21tb24oU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VS
VCghKE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpICUgc2l6
ZW9mKGRvdWJsZSkpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPmlubGluZUNhcGFj
aXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlz
LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA9PSBpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbygpKTsKICAgICAgICAgfQogCkBA
IC00MDAsMTMgKzQyNSwxMyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAg
IAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgOiBKU09iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1faW5saW5lU3RvcmFn
ZVtKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eV07CisgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4gbV9pbmxpbmVTdG9yYWdlW0lOTElORV9TVE9SQUdFX0NBUEFDSVRZ
XTsKICAgICB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC00MzEsOSArNDU2LDkg
QEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQoraW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkKIHsKLSAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CisgICAgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9vdXRPZkxpbmVTdG9yYWdlKTsKIH0KIAogaW5s
aW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCkBAIC00NzEsMTQgKzQ5
NiwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uCiAgICAgcmV0
dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0K
IAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewotICAgIEFTU0VSVChzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKLSAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKQotICAgICAgICAgICB8
fCAoY2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbyAmJiBzdGF0aWNfY2FzdDx2
b2lkKj4oc3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSkpOworICAgIGlm
ICghc3RvcmFnZSkgeworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOworICAgIH0KICAg
ICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3BlcnR5U3Rv
cmFnZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RvcmFnZSk7CisgICAgbV9vdXRPZkxpbmVTdG9y
YWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdG9yYWdlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpAQCAtNTE2LDkgKzU0NSw5IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxp
bmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQoraW5saW5lIEpTT2Jq
ZWN0OjpKU09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fcHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCisgICAgLCBtX291dE9m
TGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgdGhpcywgMCkKIHsKIH0KIApAQCAtNTQyLDE5ICs1NzEs
NiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoCiAgICAgcmV0dXJu
IGNyZWF0ZUluaGVyaXRvcklEKGdsb2JhbERhdGEpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cnVj
dHVyZTo6aW5saW5lU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBpZiAoY2xhc3NJbmZv
KCkgPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIEpTRmluYWxPYmpl
Y3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5OwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6OmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0g
ICAgcmV0dXJuIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFj
aXR5KCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KiBpbmZvKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGlu
Zm8pOwpAQCAtNjExLDEwICs2MjcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6ZmFz
dEdldE93blBybwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFz
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHNpemVf
dCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKICAgICAgICAgICAgID8gc3RydWN0dXJl
KCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCiAgICAg
ICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKLSAg
ICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBpZiAob2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZSgp
OwpAQCAtNjc2LDggKzY5Miw4IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCgKICAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNG
dW5jdGlvbik7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsK
KyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBl
aXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVu
dCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rp
b24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQpAQCAt
NzAwLDEzICs3MTYsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KAogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0
V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93
UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgp
KTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBvdXRPZkxpbmVTdG9yYWdl
KCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFByb3Bl
cnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CisgICAgICAg
IHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkp
OwogCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSk7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29t
bWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmlj
RnVuY3Rpb24pCkBAIC03MTQsMTUgKzczMSwxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemVf
dCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICBz
aXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7
CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKLSAgICAgICAgUHJv
cGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsgCi0gICAgICAgIGlm
IChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KQotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OwotCi0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3Rv
cmFnZSwgc3RydWN0dXJlKTsKKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBv
dXRPZkxpbmVTdG9yYWdlKCk7IAorICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93
T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAg
ICAgc2V0T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lm
aWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2
ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtNzM0LDcgKzc1Miw3IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICB1bnNpZ25lZCBjdXJy
ZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwogICAg
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBjdXJy
ZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgIGlmIChvZmZzZXQg
IT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewog
ICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzY4LDcgKzc4Niw4IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbiwgb2Zmc2V0KTsKICAgICAKLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwor
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgc2V0U3Ry
dWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpA
QCAtNzgxLDIyICs4MDAsMjIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKAogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIG9sZENh
cGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQob2xkQ2FwYWNp
dHkgPD0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBBU1NF
UlQob2xkQ2FwYWNpdHkgPD0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAg
ICAKLSAgICBpZiAob2xkQ2FwYWNpdHkgPT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKSB7CisgICAgaWYgKG9sZENhcGFjaXR5ID09IG5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSkgewogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3Ry
dWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBQcm9wZXJ0eVN0b3Jh
Z2UgbmV3U3RvcmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoCi0gICAgICAgIGdsb2JhbERhdGEs
IG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwot
ICAgIHNldFByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBuZXdTdHJ1Y3R1
cmUpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3Jh
Z2UoCisgICAgICAgIGdsb2JhbERhdGEsIG9sZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3
U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0
cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBzZXRTdHJ1Y3R1cmVBbmRS
ZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KAotICAgICAgICBnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAg
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVy
ZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC04MjQsMTEgKzg0MywxMSBAQCBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMg
JiBBY2Nlc3NvcikpOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gcHJvcGVydHlT
dG9yYWdlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFn
ZSgpKQotICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1
Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAg
IFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgIGlm
IChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5l
d1N0b3JhZ2UgPSBncm93T3V0T2ZMaW5lU3RvcmFnZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0T3V0T2ZMaW5l
U3RvcmFnZShnbG9iYWxEYXRhLCBuZXdTdG9yYWdlLCBzdHJ1Y3R1cmUoKSk7CiAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC05MDYsOCArOTI1
LDYgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgIGFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLS8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBSZWdp
c3Rlcjo6ZnVuY3Rpb24oKSBjb25zdAogewogICAgIGlmICghanNWYWx1ZSgpKQpAQCAtOTIyLDYg
KzkzOSwzMiBAQCBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyIFJlZ2lzdGVyOjp3aXRoQ2FsCiAgICAg
cmV0dXJuIHI7CiB9CiAKKy8vIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHBhdGNoaW5nIGNvZGUgd2hl
cmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCisvLyB0aGUgYmFzZSBpczoK
Ky8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9y
YWdlIHBvaW50ZXIuCisvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhl
IG91dC1vZi1saW5lIHN0b3JhZ2UuCitpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5l
T2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICog
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3Jh
Z2UoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zm
c2V0KTsKK30KKworaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKK3sKKyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAg
cmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOworICAgIEFTU0VSVCghKEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOworfQorCitp
bmxpbmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sK
KyAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICBzaXplX3QgbnVt
Q2FjaGVhYmxlU2xvdHMgPSAwOwogICAgIGlmICghby0+c3RydWN0dXJlKCktPmhhc05vbkVudW1l
cmFibGVQcm9wZXJ0aWVzKCkgJiYgIW8tPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkKICAgICAgICAgJiYgIW8tPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpICYmICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzKCkpCi0gICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnBy
b3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpOwogICAgIAogICAgIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOwot
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5
TmFtZXMuZGF0YSgpKTsKKyAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlv
bihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbyk7CiAKICAgICBpZiAoby0+c3RydWN0dXJl
KCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsMTIgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CiAKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqLCBKU09iamVjdCopOwotICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2Fj
aGVhYmxlU2xvdCk7Ci0gICAgICAgICAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
cHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAg
CkBAIC02MywxMSArNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIGJvb2wg
Z2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNldCkKKyAgICAgICAgYm9vbCBnZXRPZmZzZXQo
c2l6ZV90IGksIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChpID49IG1fbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgb2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIG9mZnNldCA9IGkgKyBt
X29mZnNldEJhc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04
OCwxMiArODIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVB
cnJheURhdGEpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9i
amVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2pzU3RyaW5nc1NpemU7ICsraSkKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5
TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKQEAgLTEwNSw2ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgICAg
ICB1aW50MzJfdCBtX251bUNhY2hlYWJsZVNsb3RzOwogICAgICAgICB1aW50MzJfdCBtX2pzU3Ry
aW5nc1NpemU7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0QmFzZTsKICAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1By
aW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlw
ZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7
CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBqc0FkZFNsb3dDYXNlKGNh
bGxGcmFtZSwgdjEsIHYyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBzbG90T2Zm
c2V0KQorICAgIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgc2xvdE9mZnNldCkKICAgICB7CiAg
ICAgICAgIEpTQ2VsbCogY2VsbCA9IGJhc2UuYXNDZWxsKCk7CiAgICAgICAgIHNpemVfdCBjb3Vu
dCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
cmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBzdGF0aWMgdW5zaWduZWQg
Y29tcHV0ZU51bWJlck9mR0NNYXJrZXJzCiAgICAgcmV0dXJuIGNwdXNUb1VzZTsKIH0KIAotCiBP
cHRpb25zOjpFbnRyeSBPcHRpb25zOjpzX29wdGlvbnNbT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25z
XTsKIAogLy8gUmVhbGl6ZSB0aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6CkBAIC0x
MTksMTEgKzExOCwxMSBAQCBjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRp
CiB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogewogICAgIC8vIEluaXRpYWxpemUgZWFjaCBv
ZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBGT1JfRUFD
SF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfKSBcCisjZGVmaW5lIEZPUl9FQUNI
X09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8pICAgIFwKICAgICBuYW1lXygpID0g
ZGVmYXVsdFZhbHVlXzsKICAgICBKU0NfT1BUSU9OUyhGT1JfRUFDSF9PUFRJT04pCiAjdW5kZWYg
Rk9SX0VBQ0hfT1BUSU9OCi0KKyAgICAgICAgCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFy
cyB0byBvdmVycmlkZSBvcHRpb25zIGlmIGFwcGxpY2FibGUuCiAgICAgLy8gVGhlIGV2biB2YXIg
c2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBvcHRpb24gcHJlZml4ZWQgd2l0aAogICAgIC8vICJK
U0NfIi4KQEAgLTEzMiw5ICsxMzEsMTIgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAg
ICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgIkpTQ18iICNuYW1lXyk7CiAg
ICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgot
ICAgIAogI2VuZGlmIC8vIFJVTl9USU1FX0hFVVJJU1RJQ1MKIAorI2lmIDAKKyAgICA7IC8vIERl
Y29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRlbnRhdGlvbgorI2VuZGlmCisgICAgCiAg
ICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdoZXJlIG5lZWRlZCBhbmQgbWFrZSBjb3JyZWN0aW9ucyB0
byB0aGUgb3B0aW9uczoKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXAoKSA+PSB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkpOwogICAgIEFTU0VS
VCh0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkgPj0gdGhyZXNob2xkRm9yT3B0aW1p
emVTb29uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKICNkZWZp
bmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hUYWJsZS5oPgpAQCAtNzIsMTEgKzczLDExIEBAIGlubGluZSB1bnNpZ25lZCBu
ZXh0UG93ZXJPZjIodW5zaWduZWQgdikKIAogc3RydWN0IFByb3BlcnR5TWFwRW50cnkgewogICAg
IFN0cmluZ0ltcGwqIGtleTsKLSAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgV3JpdGVCYXJyaWVyPEpT
Q2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorICAgIFBy
b3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBT
dHJpbmdJbXBsKiBrZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwg
b2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCkBAIC0xNzQs
OCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIHRvIG1haW50YWluIGEgbGlzdCBvZiB1
bnVzZWQgZW50cmllcyBpbiB0aGUgcHJvcGVydHkgc3RvcmFnZS4KICAgICB2b2lkIGNsZWFyRGVs
ZXRlZE9mZnNldHMoKTsKICAgICBib29sIGhhc0RlbGV0ZWRPZmZzZXQoKTsKLSAgICB1bnNpZ25l
ZCBnZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVk
IG9mZnNldCk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIHZv
aWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CisgICAgCisgICAgUHJvcGVydHlP
ZmZzZXQgbmV4dE9mZnNldChKU1R5cGUpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFi
bGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQu
CiAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5KEpTR2xvYmFsRGF0YSYsIEpTQ2Vs
bCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKQEAgLTIzMCw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkKiBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7Ci0gICAgT3duUHRyPCBWZWN0b3I8dW5zaWduZWQ+
ID4gbV9kZWxldGVkT2Zmc2V0czsKKyAgICBPd25QdHI8IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4g
PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1pbmltdW1U
YWJsZVNpemUgPSAxNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW1wdHlFbnRyeUluZGV4
ID0gMDsKQEAgLTI2NCw5ICsyNjcsOSBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0
b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1f
ZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90
aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBhZG9wdFB0cihu
ZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOworICAgICAgICBtX2Rl
bGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTI4OCw5ICsyOTEsOSBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsCiAgICAgfQogCiAgICAgLy8gQ29weSB0
aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiogb3RoZXJE
ZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CisgICAgVmVjdG9y
PFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKIH0KIAogaW5saW5lIFBy
b3BlcnR5VGFibGU6On5Qcm9wZXJ0eVRhYmxlKCkKQEAgLTQ2OSwyMCArNDcyLDMxIEBAIGlubGlu
ZSBib29sIFByb3BlcnR5VGFibGU6Omhhc0RlbGV0ZWRPZmYKICAgICByZXR1cm4gbV9kZWxldGVk
T2Zmc2V0cyAmJiAhbV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiB7Ci0gICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9kZWxldGVkT2Zmc2V0cy0+bGFzdCgpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5y
ZW1vdmVMYXN0KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotaW5saW5lIHZvaWQgUHJvcGVy
dHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCitpbmxpbmUgdm9pZCBQ
cm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsK
ICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkPik7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pik7CiAgICAgbV9kZWxldGVkT2Zm
c2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0
eVRhYmxlOjpuZXh0T2Zmc2V0KEpTVHlwZSB0eXBlKQoreworICAgIGlmIChoYXNEZWxldGVkT2Zm
c2V0KCkpCisgICAgICAgIHJldHVybiBnZXREZWxldGVkT2Zmc2V0KCk7CisgICAgCisgICAgaWYg
KHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gc2l6ZSgpOworICAgIAor
ICAgIHJldHVybiBzaXplKCkgKyBmaXJzdE91dE9mTGluZU9mZnNldDsKK30KKwogaW5saW5lIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6Y29weShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAg
IEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKQEAgLTQ5OSw3ICs1MTMsNyBAQCBp
bmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yCiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IHNpemVvZihQcm9wZXJ0eVRhYmxlKSArIGRhdGFTaXplKCk7CiAgICAgaWYgKG1fZGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIHJlc3VsdCArPSAobV9kZWxldGVkT2Zmc2V0cy0+Y2FwYWNp
dHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICByZXN1bHQgKz0gKG1fZGVsZXRlZE9m
ZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YoUHJvcGVydHlPZmZzZXQpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3BlcnR5T2Zmc2V0X2gKKyNkZWZpbmUgUHJvcGVydHlPZmZzZXRfaAorCisjaW5jbHVkZSAi
SlNUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFD
SVRZIDYKKyNlbHNlCisjZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDQKKyNlbmRpZgor
Cit0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKKworc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zm
c2V0IGludmFsaWRPZmZzZXQgPSAtMTsKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkgPSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWTsKK3N0YXRpYyBjb25z
dCBQcm9wZXJ0eU9mZnNldCBmaXJzdE91dE9mTGluZU9mZnNldCA9IGlubGluZVN0b3JhZ2VDYXBh
Y2l0eTsKKworLy8gRGVjbGFyZSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkgdGVu
ZCB0byBkbyBmb3J3YXJkIGNhbGxzLgoraW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlP
ZmZzZXQpOworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7
CitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCk7CitpbmxpbmUgdm9p
ZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBib29sIGlz
VmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbklubGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZz
ZXQpOworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zm
c2V0KTsKK2lubGluZSBzaXplX3QgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNl
dChQcm9wZXJ0eU9mZnNldCwgSlNUeXBlKTsKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBuZXh0UHJv
cGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUpOworCitpbmxpbmUgdm9pZCBjaGVj
a09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNl
dCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKK30KKworaW5saW5lIHZv
aWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgQVNT
RVJUKG9mZnNldCA+PSBpbnZhbGlkT2Zmc2V0KTsKKyAgICBBU1NFUlQob2Zmc2V0ID09IGludmFs
aWRPZmZzZXQKKyAgICAgICAgICAgfHwgdHlwZSA9PSBGaW5hbE9iamVjdFR5cGUKKyAgICAgICAg
ICAgfHwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7Cit9CisKK2lubGluZSB2b2lkIHZhbGlk
YXRlT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZz
ZXQpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9p
ZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQo
b2Zmc2V0KSk7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0OworfQorCitpbmxpbmUgYm9vbCBpc0lubGluZU9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4g
b2Zmc2V0IDwgaW5saW5lU3RvcmFnZUNhcGFjaXR5OworfQorCitpbmxpbmUgYm9vbCBpc091dE9m
TGluZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zm
c2V0KTsKKyAgICByZXR1cm4gIWlzSW5saW5lT2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBz
aXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAg
ICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgIEFTU0VSVChpc0lubGluZU9mZnNldChvZmZz
ZXQpKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0
T2ZMaW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZz
ZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAg
cmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworfQorCitpbmxpbmUgc2l6ZV90
IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworICAg
IGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQorICAgICAgICByZXR1cm4gb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQp
OworICAgIGlmIChvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG9mZnNldCAtIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0ICsgMTsKK30KKwor
aW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdHlwZSk7Cisg
ICAgaWYgKHR5cGUgPT0gRmluYWxPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gb2Zmc2V0ICsg
MTsKKyAgICByZXR1cm4gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zmc2V0
KTsKK30KKworaW5saW5lIFByb3BlcnR5T2Zmc2V0IG5leHRQcm9wZXJ0eU9mZnNldEZvcihQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIEpTVHlwZSB0eXBlKQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNl
dCwgdHlwZSk7CisgICAgaWYgKHR5cGUgIT0gRmluYWxPYmplY3RUeXBlICYmIG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CisgICAg
cmV0dXJuIG9mZnNldCArIDE7Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBmaXJzdFByb3Bl
cnR5T2Zmc2V0Rm9yKEpTVHlwZSB0eXBlKQoreworICAgIHJldHVybiBuZXh0UHJvcGVydHlPZmZz
ZXRGb3IoaW52YWxpZE9mZnNldCwgdHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gUHJvcGVydHlPZmZzZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4K
QEAgLTg5LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhY2hlZFByb3BlcnR5
VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5
VHlwZTsgfQogICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJs
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgPT0gVmFsdWU7IH0K
LSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChp
c0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX29mZnNldDsKQEAgLTEwNCw3ICsx
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNl
LCBKU1ZhbHVlIHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldFZhbHVlKEpT
VmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIG1fZ2V0VmFs
dWUgPSBKU0NfVkFMVUVfTUFSS0VSOwpAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgbV9kYXRhLmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2Us
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIHZvaWQgc2V0
Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVu
YywgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
Z2V0dGVyRnVuYyk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01B
UktFUjsKQEAgLTIwNiw3ICsyMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2Ug
dGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNlZCBiZWZvcmUuCiAgICAgICAgICAgICAvLyAo
Rm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9uJ3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBi
ZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxseSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAg
ICAgICBtX29mZnNldCA9IDA7CisgICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7
CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwogICAgICAg
ICB9CiAKQEAgLTIzMiw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1
ZSBtX3ZhbHVlOwogICAgICAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOwogCi0gICAgICAgIHNpemVf
dCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIENh
Y2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVy
dHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3Bl
cnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldEV4aXN0
aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgbV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICAgICAg
IG1fYmFzZSA9IGJhc2U7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIHNpemVfdCBv
ZmZzZXQpCisgICAgICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgbV90eXBlID0gTmV3UHJv
cGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwpAQCAtNjQsNyArNjQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQotICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0
KCkgY29uc3QgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAor
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIH0KQEAgLTcyLDcgKzczLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2Jq
ZWN0KiBtX2Jhc2U7Ci0gICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgbV9vZmZzZXQ7CiAgICAgICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZp
c2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhp
cywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFu
c2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5pc0ZpbmFsT2JqZWN0KCkgPyBKU0ZpbmFsT2JqZWN0
X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IDApCi0gICAgLCBtX29mZnNldChub09mZnNldCkKKyAg
ICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQ
aW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKGZhbHNlKQpAQCAtMTc5LDggKzE3OSw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVs
bCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNo
cG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoMCkKLSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBh
Y2l0eSgwKQorICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAsIG1fZGljdGlvbmFy
eUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUo
ZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCkBAIC0yMDAs
OCArMjAwLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAg
ICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlw
ZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90
cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQotICAgICwgbV9wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkK
LSAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQorICAgICwgbV9vdXRPZkxpbmVDYXBhY2l0eShwcmV2
aW91cy0+bV9vdXRPZkxpbmVDYXBhY2l0eSkKKyAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAg
ICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRl
clByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKQEAgLTIz
OSw3ICsyMzksNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3Bl
cnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAw
LCBtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJl
LT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVy
aWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQot
ICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChtX29mZnNldCArIDEpOworICAgICAgICBjcmVhdGVQ
cm9wZXJ0eU1hcChudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5m
by50eXBlKCkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAt
IDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CkBA
IC0yNTYsMjEgKzI1NiwyMSBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChKCiAgICAgfQogfQogCi1pbmxpbmUgc2l6ZV90IG5leHRQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eShzaXplX3QgY3VycmVudENhcGFjaXR5KQoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpCiB7CiAgICAgaWYgKCFjdXJyZW50
Q2FwYWNpdHkpCiAgICAgICAgIHJldHVybiA0OwogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkg
KiAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkK
K3ZvaWQgU3RydWN0dXJlOjpncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKQogewotICAgIG1fcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkgPSBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkobV9wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSk7CisgICAgbV9vdXRPZkxpbmVDYXBhY2l0eSA9IG5leHRPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkobV9vdXRPZkxpbmVDYXBhY2l0eSk7CiB9CiAKLXNpemVfdCBTdHJ1
Y3R1cmU6OnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKQorc2l6ZV90IFN0cnVjdHVy
ZTo6c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKIHsKLSAgICByZXR1cm4g
bmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOwor
ICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1fb3V0T2ZMaW5lQ2FwYWNp
dHkpOwogfQogIAogdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0y
ODcsNyArMjg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdAog
ICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlSW5QcmV2
aW91cyA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQo
KTsKICAgICAgICAgaWYgKHNwZWNpZmljVmFsdWVJblByZXZpb3VzICYmIHNwZWNpZmljVmFsdWVJ
blByZXZpb3VzICE9IHNwZWNpZmljVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQgIT0gbm9PZmZzZXQpOworICAg
ICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0LCBzdHJ1Y3R1
cmUtPm1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0
aW9uLT5tX29mZnNldDsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICB9
CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdAogICAgIHJldHVybiAwOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKICAg
ICAvLyBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHdlIG1heSBoYXZlIGdvdCB0byB0
aGlzIHBvaW50IGlmIHRoZXJlIGlzCiAgICAgLy8gYWxyZWFkeSBhIHRyYW5zaXRpb24gd2l0aCB0
aGUgY29ycmVjdCBwcm9wZXJ0eSBuYW1lIGFuZCBhdHRyaWJ1dGVzLCBidXQKQEAgLTMyNyw4ICsz
MjcsOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAg
IFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFu
c2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAg
ICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQ
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICBpZiAodHJhbnNpdGlvbi0+b3V0T2ZM
aW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IHRyYW5zaXRpb24tPmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbjsKICAgICB9CiAgICAgCkBAIC0zNTMsMTUgKzM1MywxNSBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgfQogCiAgICAgb2Zmc2V0ID0gdHJhbnNp
dGlvbi0+cHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICB0
cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBpZiAodHJhbnNp
dGlvbi0+b3V0T2ZMaW5lU2l6ZSgpID4gdHJhbnNpdGlvbi0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkK
KyAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFu
c2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRh
YmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsK
IH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9m
ZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSk7CiAKQEAgLTU0OCwxOCArNTQ4LDE5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVu
RGljdGlvbmFyeVMKIAogICAgICAgICBzaXplX3QgcHJvcGVydHlDb3VudCA9IG1fcHJvcGVydHlU
YWJsZS0+c2l6ZSgpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gdmFsdWVzKHByb3BlcnR5Q291
bnQpOwotCisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgUHJvcGVy
dHlPZmZzZXQgZmlyc3RPZmZzZXQgPSBmaXJzdFByb3BlcnR5T2Zmc2V0Rm9yKG1fdHlwZUluZm8u
dHlwZSgpKTsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0
eVRhYmxlLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVy
ID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsK
ICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGl0ZXItPm9m
ZnNldCk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydHkgdGFibGUgdG8gaGF2ZSB0aGUg
bmV3IHByb3BlcnR5IG9mZnNldHMKLSAgICAgICAgICAgIGl0ZXItPm9mZnNldCA9IGk7CisgICAg
ICAgICAgICBpdGVyLT5vZmZzZXQgPSBpICsgZmlyc3RPZmZzZXQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHByb3BlcnR5IHZhbHVlcyBpbnRvIHRo
ZWlyIGZpbmFsIGxvY2F0aW9ucwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
cGVydHlDb3VudDsgaSsrKQotICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zm
c2V0KGdsb2JhbERhdGEsIGZpcnN0T2Zmc2V0ICsgaSwgdmFsdWVzW2ldKTsKIAogICAgICAgICBt
X3Byb3BlcnR5VGFibGUtPmNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgICB9CkBAIC01NjgsNyAr
NTY5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogICAgIHJl
dHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlP
ZmZzZXQgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlv
bkNhY2hlKTsKIApAQCAtNTc5LDEzICs1ODAsMTMgQEAgc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlXaXRob3V0VHJhbgogICAgIAogICAgIHBpbigpOwogCi0gICAgc2l6ZV90IG9mZnNldCA9
IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gcHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcHV0U3BlY2lmaWNWYWx1ZShnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIGlmIChvdXRP
ZkxpbmVTaXplKCkgPiBvdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICBncm93T3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpOwogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKQEAgLTU5Myw4ICs1
OTQsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUCiAgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyhnbG9iYWxEYXRhKTsKIAog
ICAgIHBpbigpOwotICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKLSAg
ICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiByZW1vdmUocHJvcGVydHlOYW1lKTsKIH0KIAog
dm9pZCBTdHJ1Y3R1cmU6OnBpbigpCkBAIC02MzksMjAgKzYzOSwyMCBAQCBQYXNzT3duUHRyPFBy
b3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29wCiAKIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4g
U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3Bl
cnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVy
dHlUYWJsZSkgOiBuZXcgUHJvcGVydHlUYWJsZShtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBt
X29mZnNldCkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJv
cGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJv
cGVydHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5m
by50eXBlKCkpKSk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogCiAgICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlKQotICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFs
aWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJs
ZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0OwogICAgIGlmICghZW50cnkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsK
IAogICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKICAgICBzcGVjaWZpY1ZhbHVl
ID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKUwogICAgICAgICBpdGVyLT5zcGVjaWZp
Y1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09
IG5vdEZvdW5kKTsKKyAgICBBU1NFUlQoIUpTQzo6aXNWYWxpZE9mZnNldChnZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lKSkpOwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChh
dHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC02OTgsMTIgKzY5OCw3IEBAIHNpemVfdCBTdHJ1Y3R1
cmU6OnB1dFNwZWNpZmljVmFsdWUoSlNHbG8KICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAg
ICAgICAgY3JlYXRlUHJvcGVydHlNYXAoKTsKIAotICAgIHVuc2lnbmVkIG5ld09mZnNldDsKLQot
ICAgIGlmIChtX3Byb3BlcnR5VGFibGUtPmhhc0RlbGV0ZWRPZmZzZXQoKSkKLSAgICAgICAgbmV3
T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5nZXREZWxldGVkT2Zmc2V0KCk7Ci0gICAgZWxzZQot
ICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKKyAgICBQcm9wZXJ0
eU9mZnNldCBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPm5leHRPZmZzZXQobV90eXBlSW5m
by50eXBlKCkpOwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShn
bG9iYWxEYXRhLCB0aGlzLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSkpOwogCkBAIC03MTEsMjAgKzcwNiwyMCBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZp
Y1ZhbHVlKEpTR2xvCiAgICAgcmV0dXJuIG5ld09mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVy
ZTo6cmVtb3ZlKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1
Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIAogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS51aWQoKTsK
IAogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Cisg
ICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgUHJvcGVydHlUYWJsZTo6ZmluZF9p
dGVyYXRvciBwb3NpdGlvbiA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChyZXApOwogICAgIGlmICgh
cG9zaXRpb24uZmlyc3QpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJu
IGludmFsaWRPZmZzZXQ7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9m
ZnNldDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwb3NpdGlvbi5maXJzdC0+b2Zmc2V0
OwogCiAgICAgbV9wcm9wZXJ0eVRhYmxlLT5yZW1vdmUocG9zaXRpb24pOwogICAgIG1fcHJvcGVy
dHlUYWJsZS0+YWRkRGVsZXRlZE9mZnNldChvZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5
ICs4Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZv
aWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
UHJvcGVydHlPZmZzZXQmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgUHJvcGVydHlPZmZzZXQmKTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlPZmZzZXQmKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1
dGVDaGFuZ2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0xMDMsMzIgKzEwMywzMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAgYm9v
bCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50RXh0ZW5zaW9uczsgfQog
ICAgICAgICBib29sIGRpZFRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RpZFRyYW5zaXRp
b247IH0KLSAgICAgICAgYm9vbCBwdXRXaWxsR3Jvd1Byb3BlcnR5U3RvcmFnZSgpCisgICAgICAg
IGJvb2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gcHJvcGVydHlTdG9yYWdlU2l6
ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IG91dE9mTGlu
ZVNpemUoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxl
KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSA+PSBjdXJyZW50U2l6ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGN1cnJlbnRTaXplID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9m
ZnNldChtX29mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG91dE9mTGluZUNhcGFjaXR5
KCkgPj0gY3VycmVudFNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2l6ZSA9
PSBvdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBBU1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9y
YWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSk7
CiAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBB
U1NFUlQocHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5VGFibGUtPnNpemUo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgPT0gcHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIEFTU0VSVCh0b3RhbFN0b3JhZ2VDYXBh
Y2l0eSgpID49IG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBt
X3Byb3BlcnR5VGFibGUtPnNpemUoKSA9PSB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAg
ICB9Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdQcm9wZXJ0
eVN0b3JhZ2VTaXplKCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAogCiAgICAgICAgIFN0cnVjdHVyZSog
ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNl
IHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0g
ICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zm
c2V0IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBt
X3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlL
aW5kICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTQ5LDE4ICsxNDksMTE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7IHJldHVybiBtX3By
ZXZpb3VzLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0g
JnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKKyAgICAgICAg
fQogICAgICAgICBib29sIHRyYW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBz
dHJ1Y3R1cmVUb0ZpbmQpOwogCi0gICAgICAgIHZvaWQgZ3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCk7Ci0gICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgY29uc3Qg
eyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eTsgfQotICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOyByZXR1cm4gKG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlT
dG9yYWdlU2l6ZSgpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsgMSkpOyB9Ci0g
ICAgICAgIHNpemVfdCBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkoKSBjb25zdDsKLSAgICAgICAgYm9v
bCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdCBnZXQoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERh
dGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgdm9pZCBncm93T3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZz
X2luZm8pOworICAgICAgICAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CisgICAgICAg
IH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlSW5mby50eXBlKCkgPT0g
RmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3Bl
cnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGlubGluZVN0b3JhZ2VDYXBhY2l0eSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgLSBpbmxpbmVT
dG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVy
T2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9CisgICAg
ICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemVGb3JLbm93bk5vbkZpbmFsT2JqZWN0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpICE9IEZpbmFs
T2JqZWN0VHlwZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkg
PT0gJnNfaW5mbyk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSB0
aGlzLT5pbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPCBp
bmxpbmVDYXBhY2l0eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAtIGlubGluZUNhcGFjaXR5OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1f
b2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV90eXBlSW5mby50eXBlKCkgPT0gRmlu
YWxPYmplY3RUeXBlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW5saW5lU2l6ZUZvcktu
b3duRmluYWxPYmplY3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90
eXBlSW5mby50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vZmZzZXQgKyAxOworICAg
ICAgICAgICAgaWYgKHJlc3VsdCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmxpbmVTdG9yYWdl
Q2FwYWNpdHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVk
IGlubGluZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWhhc0lubGlu
ZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBpbmxpbmVTaXplRm9yS25vd25GaW5hbE9iamVjdCgpOworICAgICAgICB9CisgICAgICAgIHVu
c2lnbmVkIHRvdGFsU3RvcmFnZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOworICAgICAgICB9
CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZv
KTsKKyAgICAgICAgICAgIHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5ICsgaW5saW5lQ2FwYWNp
dHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0VmFsaWRPZmZz
ZXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaGFzSW5saW5lU3RvcmFnZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0
b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFs
aWRPZmZzZXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlKSB7CisgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgc2l6ZSA9IG1fcHJvcGVydHlU
YWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgICAgIGlmICghaGFzSW5s
aW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgICAgICAgICBzaXplICs9IGlubGluZVN0b3JhZ2VD
YXBhY2l0eTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSAtIDE7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBp
c1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldCA+PSBmaXJzdFZhbGlkT2Zmc2V0KCkKKyAgICAgICAgICAg
ICAgICAmJiBvZmZzZXQgPD0gbGFzdFZhbGlkT2Zmc2V0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lm
aWNWYWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wg
aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQ
cm90bzsgfQpAQCAtMTc3LDcgKzI3MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25F
bnVtZXJhYmxlUHJvcGVydGllczsgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5
KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJl
dHVybiAhSlNDOjppc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQogCiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xv
YmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgZGlzYWJsZVNwZWNpZmljRnVu
Y3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVj
aWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KQEAgLTI3Myw4ICszNzQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfSBEaWN0aW9uYXJ5S2luZDsKICAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBEaWN0
aW9uYXJ5S2luZCk7CiAKLSAgICAgICAgc2l6ZV90IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlKFByb3BlcnR5TmFtZSk7CisgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IHB1dFNwZWNpZmljVmFsdWUoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVydHlOYW1lKTsKIAogICAgICAgICB2b2lkIGNyZWF0
ZVByb3BlcnR5TWFwKHVuc2lnbmVkIGtleUNvdW50ID0gMCk7CiAgICAgICAgIHZvaWQgY2hlY2tD
b25zaXN0ZW5jeSgpOwpAQCAtMzAxLDcgKzQwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpbnQgdHJhbnNpdGlvbkNvdW50KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgLy8g
U2luY2UgdGhlIG51bWJlciBvZiB0cmFuc2l0aW9ucyBpcyBhbHdheXMgdGhlIHNhbWUgYXMgbV9v
ZmZzZXQsIHdlIGtlZXAgdGhlIHNpemUgb2YgU3RydWN0dXJlIGRvd24gYnkgbm90IHN0b3Jpbmcg
Ym90aC4KLSAgICAgICAgICAgIHJldHVybiBtX29mZnNldCA9PSBub09mZnNldCA/IDAgOiBtX29m
ZnNldCArIDE7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQo
bV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wg
aXNWYWxpZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4p
IGNvbnN0OwpAQCAtMzEwLDggKzQxMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7CiAKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBub09mZnNldCA9IC0xOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwogCiAgICAgICAgIFR5cGVJ
bmZvIG1fdHlwZUluZm87CkBAIC0zMzYsMTAgKzQzNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAgICAgICAgIG11dGFibGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25X
YXRjaHBvaW50U2V0OwogCi0gICAgICAgIHVpbnQzMl90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHk7CisgICAgICAgIHVpbnQzMl90IG1fb3V0T2ZMaW5lQ2FwYWNpdHk7CiAKICAgICAgICAgLy8g
bV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCi0gICAgICAgIGlu
dCBtX29mZnNldDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAKICAgICAgICAg
dW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgICAgIGJvb2wgbV9pc1Bpbm5lZFBy
b3BlcnR5VGFibGUgOiAxOwpAQCAtMzUzLDI2ICs0NTIsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBp
bmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAm
c19pbmZvKTsKICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2Jh
bERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgIHJldHVy
biBub3RGb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgICAg
IFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHByb3BlcnR5
TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQg
OiBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFs
aWRPZmZzZXQ7CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFBy
b3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCi0gICAg
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNl
dDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+
ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0OwotICAgICAgICByZXR1cm4gZW50cnkg
PyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBlbnRyeSA/IGVudHJ5
LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KICAgICAKICAgICBpbmxpbmUgSlNWYWx1
ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150861</attachid>
            <date>2012-07-04 19:44:30 -0700</date>
            <delta_ts>2012-07-05 14:18:54 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>overflowstorage_patch_23.diff</filename>
            <type>text/plain</type>
            <size>265184</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0MSBA
QAorMjAxMi0wNy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZSBwcm9wZXJ0eSBzdG9yYWdlIHNob3VsZCBub3QgYmUgd2FzdGVkIHdoZW4gaXQgaXMg
ZXhoYXVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDM0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSwgaWYgd2Ugc3dpdGNoZWQgYW4gb2JqZWN0IGZyb20gdXNpbmcg
aW5saW5lIHN0b3JhZ2UgdG8gb3V0LW9mLWxpbmUKKyAgICAgICAgc3RvcmFnZSwgd2Ugd291bGQg
YWJhbmRvbiB0aGUgaW5saW5lIHN0b3JhZ2UuIFRoaXMgd291bGQgaGF2ZSB0d28gbWFpbiBpbXBs
aWNhdGlvbnM6CisgICAgICAgIChpKSBhbGwgYWNjZXNzZXMgdG8gdGhlIG9iamVjdCwgZXZlbiBm
b3IgcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBpbiBpbmxpbmUKKyAgICAgICAgc3Rv
cmFnZSwgbXVzdCBub3cgdGFrZSBhbiBleHRyYSBpbmRpcmVjdGlvbjsgYW5kIChpaSkgd2Ugd2Fz
dGUgYSBub24tdHJpdmlhbCBhbW91bnQKKyAgICAgICAgb2Ygc3BhY2Ugc2luY2Ugd2UgbXVzdCBh
bGxvY2F0ZSBhZGRpdGlvbmFsIG91dC1vZi1saW5lIHN0b3JhZ2UgdG8gaG9sZCBwcm9wZXJ0aWVz
CisgICAgICAgIHRoYXQgd291bGQgaGF2ZSBmaXQgaW4gdGhlIGlubGluZSBzdG9yYWdlLiBUaGVy
ZSdzIGFsc28gdGhlIGNvcHlpbmcgY29zdCB3aGVuCisgICAgICAgIHN3aXRjaGluZyB0byBvdXQt
b2YtbGluZSBzdG9yYWdlIC0gd2UgbXVzdCBjb3B5IGFsbCBpbmxpbmUgcHJvcGVydGllcyBpbnRv
IG91Zi1vZi1saW5lCisgICAgICAgIHN0b3JhZ2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIHdheSB0aGF0IG9iamVjdCBwcm9wZXJ0eSBzdG9yYWdlIHdvcmtzIHNv
IHRoYXQgd2UgY2FuIHVzZSBib3RoCisgICAgICAgIGlubGluZSBhbmQgb3V0LW9mLWxpbmUgc3Rv
cmFnZSBjb25jdXJyZW50bHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGludHJvZHVjaW5nIGEK
KyAgICAgICAgbmV3IG5vdGlvbiBvZiBwcm9wZXJ0eSBvZmZzZXQuIFRoaXMgUHJvcGVydHlPZmZz
ZXQgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGl0CisgICAgICAgIGJlaGF2ZXMgYXMg
Zm9sbG93czoKKyAgICAgICAgCisgICAgICAgIG9mZnNldCA9PSAtMTogaW52YWxpZCBvZmZzZXQs
IGluZGljYXRpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAKKyAg
ICAgICAgMCA8PSBvZmZzZXQgPD0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OiBvZmZzZXQgaW50byBp
bmxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAgICAgIGlubGluZVN0b3JhZ2VDYXBhY2l0eSA8
IG9mZnNldDogb2Zmc2V0IGludG8gb3V0LW9mLWxpbmUgc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIEJlY2F1c2Ugbm9uLWZpbmFsIG9iamVjdHMgZG9uJ3QgaGF2ZSBpbmxpbmUgc3RvcmFnZSwg
dGhlIG9ubHkgdmFsaWQgUHJvcGVydHlPZmZzZXRzCisgICAgICAgIGZvciB0aG9zZSBvYmplY3Rz
JyBwcm9wZXJ0aWVzIGFyZSAtMSBvciA+IGlubGluZVN0b3JhZ2VDYXBhY2l0eS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbm93IG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRvIHVzZSBpbmxpbmUg
b3Igb3V0LW9mLWxpbmUgc3RvcmFnZSBmb3IgYW4gYWNjZXNzIGlzCisgICAgICAgIG1hZGUgYmFz
ZWQgb24gdGhlIG9mZnNldCwgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdHVyZS4gSXQgYWxzbyBtZWFu
cyB0aGF0IGFueSBhY2Nlc3MKKyAgICAgICAgd2hlcmUgdGhlIG9mZnNldCBpcyBhIHZhcmlhYmxl
IG11c3QgaGF2ZSBhbiBleHRyYSBicmFuY2gsIHVubGVzcyB0aGUgdHlwZSBvZiB0aGUKKyAgICAg
ICAgb2JqZWN0IGlzIGFsc28ga25vd24gKGlmIGl0J3Mga25vd24gdG8gYmUgYSBub24tZmluYWwg
b2JqZWN0IHRoZW4gd2UgY2FuIGp1c3QgYXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIG9mZnNldCBp
cyA+PSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29r
cyBsaWtlIGEgYmlnIEtyYWtlbiBzcGVlZC11cCBhbmQgYSBzbGlnaHQgVjggc3BlZWQtdXAuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJs
ZXIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyV2lkZThCaXRJbW1lZGlhdGUp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAo
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChDb252ZXJ0aWJsZUxvYWRMYWJlbCk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExh
YmVsOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsOjppc1NldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cyk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoQ29kZUxvY2F0aW9uQ29tbW9uKToKKyAgICAgICAgKENvZGVMb2NhdGlvbkNv
bnZlcnRpYmxlTG9hZCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9h
ZDo6Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpj
b252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y29udmVydGlibGVMb2FkUHRy
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKFJlcGF0Y2hCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aExvYWQpOgorICAg
ICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6
CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZl
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
Om9mZnNldCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZFN0YXR1czo6b2Zmc2V0KToKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZUZvclN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpS
ZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0YXR1czo6
b2Zmc2V0KToKKyAgICAgICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3RydWN0dXJlU2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkZmdSZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6
OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNh
Y2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRCeUlEUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVN0
dWJDb21waWxhdGlvbkluZm86OmNvcHlUb1N0dWJJbmZvKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6UHJvcGVydHlTdHVi
Q29tcGlsYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFNlbGZMaXN0KToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlR2V0QnlJZFByb3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRC
eUlkQ2hhaW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6
CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9i
YWwpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpKSVQ6OnBh
dGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90
UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoR2V0QnlJZFNlbGYp
OgorICAgICAgICAoSlNDOjpKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0
cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL3g4Ni5yYjoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmdW5j
dGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Omhhc0lubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5l
U3RvcmFnZVVuc2FmZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om91dE9mTGluZVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6bG9jYXRpb25Gb3JPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
b2Zmc2V0Rm9yTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE9mZnNldCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjphZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNOb25GaW5hbE9iamVj
dDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTm9uRmluYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldE91dE9mTGluZVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
Om9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OmluZGV4UmVs
YXRpdmVUb0Jhc2UpOgorICAgICAgICAoSlNDOjpvZmZzZXRSZWxhdGl2ZVRvQmFzZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpu
b3JtYWxpemVQcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKFByb3BlcnR5
TWFwRW50cnkpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcEVudHJ5OjpQcm9wZXJ0eU1hcEVu
dHJ5KToKKyAgICAgICAgKFByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRh
YmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Z2V0RGVs
ZXRlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OnNpemVJbk1lbW9yeSk6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OmNoZWNrT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjppc1ZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6aXNJbmxpbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjppc091dE9mTGluZU9mZnNldCk6CisgICAgICAgIChKU0M6
Om9mZnNldEluSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZSk6CisgICAgICAgIChKU0M6Om9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UpOgorICAg
ICAgICAoSlNDOjpudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldCk6CisgICAgICAg
IChKU0M6Om51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bmV4dFBy
b3BlcnR5T2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6Zmlyc3RQcm9wZXJ0eU9mZnNldEZvcik6
CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpjYWNoZWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFZh
bHVlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0ZXJTbG90
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpjbGVhck9mZnNldCk6CisgICAgICAgICog
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90
OjpzZXRFeGlzdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojpz
ZXROZXdQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6Y2FjaGVkT2Zm
c2V0KToKKyAgICAgICAgKFB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
Omdyb3dPdXRPZkxpbmVDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJl
dmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpvdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lU2l6ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5saW5lU3RvcmFnZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlubGlu
ZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppbmxp
bmVTaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VTaXplKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VDYXBhY2l0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zmlyc3RWYWxpZE9mZnNldCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6bGFzdFZhbGlkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omdl
dCk6CisKIDIwMTItMDctMDQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0
dGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RlY3QuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDkgQEAgRVhQT1JUUwog
ICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRDdXJyZW50VGhyZWFk
QE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAgICAgP2FkZEZpbmFsaXplckBIZWFwQEpTQ0BA
UUFFWFBBVkpTQ2VsbEAyQFA2QVgwQFpAWgotICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWUHJvcGVydHlOYW1l
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBQQVYxMkBWUHJvcGVydHlOYW1lQDJA
SVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0eU5hbWVAMkBJUEFWSlND
ZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFW
MTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBB
QUhAWgorICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVj
dHVyZUBKU0NAQFNBUEFWMTJAUEFWMTJAVlByb3BlcnR5TmFtZUAyQElQQVZKU0NlbGxAMkBBQUhA
WgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2Fk
ZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTbG93
Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBA
V1RGQEBQQVZKU0dsb2JhbERhdGFAMkBQQVZTdHJpbmdJbXBsQDRAQFoKICAgICA/YWRkU3RhdGlj
R2xvYmFsc0BKU0dsb2JhbE9iamVjdEBKU0NAQElBRVhQQVVHbG9iYWxQcm9wZXJ0eUluZm9AMTJA
SEBaCkBAIC0xOTIsNyArMTkyLDYgQEAgRVhQT1JUUwogICAgID9mcm9tQElkZW50aWZpZXJASlND
QEBTQT9BVjEyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQcm9wZXJ0
eVNsb3RASlNDQEBBQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/ZnVuY3Rp
b25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEJWVVN0cmluZ0AyQFhaCi0gICAgP2dl
dEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAVlByb3BlcnR5TmFtZUAyQEFB
SUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/
QVZVU3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgogICAgID9nZXRDYWxs
RGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENhbGxEYXRhQDJAQFoK
ICAgICA/Z2V0Q2FsbGFibGVPYmplY3RTbG93QEpTQ0BAWUFQQVZKU0NlbGxAMUBQQVYyMUBAWgpA
QCAtMjExLDExICsyMTAsMTIgQEAgRVhQT1JUUwogICAgID9nZXRTdGFja1RyYWNlQEludGVycHJl
dGVyQEpTQ0BAU0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0YWNrRnJhbWVASlND
QEAkMEFAQFdURkBAQFoKICAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRT9BVlVTdHJpbmdA
MkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZF
eGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKKyAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUhB
QVZKU0dsb2JhbERhdGFAMkBWUHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAg
ID9nZXR0ZXJAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAg
P2dsb2JhbEV4ZWNASlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgogICAg
ID9nbG9iYWxPYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCisgICAgP2dyb3dPdXRPZkxpbmVT
dG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFUEFWPyRXcml0ZUJhcnJpZXJCYXNlQFc0VW5rbm93bkBK
U0NAQEAyQEFBVkpTR2xvYmFsRGF0YUAyQElJQFoKICAgICA/Z3Jvd0BIYW5kbGVTZXRASlNDQEBB
QUVYWFoKLSAgICA/Z3Jvd1Byb3BlcnR5U3RvcmFnZUBKU09iamVjdEBKU0NAQFFBRVBBVj8kV3Jp
dGVCYXJyaWVyQmFzZUBXNFVua25vd25ASlNDQEBAMkBBQVZKU0dsb2JhbERhdGFAMkBJSUBaCiAg
ICAgP2hhc0luc3RhbmNlQEpTT2JqZWN0QEpTQ0BAU0FfTlBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZK
U1ZhbHVlQDJAMkBaCiAgICAgP2hhc1Byb3BlcnR5QEpTT2JqZWN0QEpTQ0BAUUJFX05QQVZFeGVj
U3RhdGVAMkBJQFoKICAgICA/aGFzUHJvcGVydHlASlNPYmplY3RASlNDQEBRQkVfTlBBVkV4ZWNT
dGF0ZUAyQFZQcm9wZXJ0eU5hbWVAMkBAWgpAQCAtMzI4LDcgKzMyOCw3IEBAIEVYUE9SVFMKICAg
ICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmls
ZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAgID9zdG9wU2Ft
cGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBs
QFVTdHJpbmdASlNDQEBRQkU/QVYxMkBJSUBaCi0gICAgP3N1Z2dlc3RlZE5ld1Byb3BlcnR5U3Rv
cmFnZVNpemVAU3RydWN0dXJlQEpTQ0BAUUFFSVhaCisgICAgP3N1Z2dlc3RlZE5ld091dE9mTGlu
ZVN0b3JhZ2VDYXBhY2l0eUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFw
QEpTQ0BAUUFFUEFWSW5jcmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3Rv
dHlwZUBKU1ZhbHVlQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAg
ID90aGlzT2JqZWN0QERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEFWSlNPYmplY3RAMkBYWgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk0LDYgKzEwOTQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxQcm9wZXJ0eU9mZnNl
dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXFByb3BlcnR5U2xvdC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAKIAkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQy
NzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZFMTU5Mjc1RDIwMDRD
QjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEZGNDI3NzIxNTkyNzVE
ODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNv
bHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZGNzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1
QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZG
RkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTU3LDYgKzk1OCw3IEBACiAJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBE
RkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGlz
YXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc29sdmVH
bG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2RjE1
OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDRkFQaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZBUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdD
RkFQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNyw2ICsyMTA5LDcg
QEAKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCiAJ
CQkJNjU0MDBDMEYwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmNwcCAqLywK
IAkJCQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLywK
KwkJCQkwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEgLyogUHJvcGVydHlPZmZzZXQuaCAqLywKIAkJ
CQk2NTYyMUU2QjA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLywKIAkJCQk2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8sCiAJCQkJNjVDMDJG
QkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLywKQEAgLTI4MTEsNiArMjgxNCw3IEBA
CiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQ
cm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMTgsNiArMTAxOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJfaW1t
X1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1aW50OF90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChybiAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNElt
bTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBydCwgaW1tZWRpYXRlKTsKKyAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFjdChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBB
Uk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewpAQCAtMjExNyw2ICsyMTIzLDQ2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkp
OworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGlu
c3RydWN0aW9uU3RhcnQpOworICAgICAgICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAg
ICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBPUF9BRERfaW1tX1QzOgorICAgICAgICAgICAgQVNTRVJUKCEocHRyWzFdICYgMHhGMDAwKSk7
CisgICAgICAgICAgICBwdHJbMF0gJj0gMHgwMDBGOworICAgICAgICAgICAgcHRyWzBdIHw9IE9Q
X0xEUl9pbW1fVDM7CisgICAgICAgICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4MEYwMCkgPDwg
NDsKKyAgICAgICAgICAgIHB0clsxXSAmPSAweEYwRkY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAg
ICBzd2l0Y2ggKHB0clswXSAmIDB4RkZGMCkgeworICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6
CisgICAgICAgICAgICBBU1NFUlQoIShwdHJbMV0gJiAweDBGMDApKTsKKyAgICAgICAgICAgIHB0
clswXSAmPSAweDAwMEY7CisgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQUREX2ltbV9UMzsKKyAg
ICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0OworICAgICAgICAgICAg
cHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0FE
RF9pbW1fVDM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2go
cHRyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdP
ZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1
LDYgKzI5NSwzNiBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgbV9sYWJlbDsKICAgICB9OworICAgIAorICAgIC8vIENvbnZlcnRpYmxlTG9hZExhYmVsOgor
ICAgIC8vCisgICAgLy8gQSBDb252ZXJ0aWJsZUxvYWRMYWJlbCByZWNvcmRzIGEgbG9hZFB0ciBp
bnN0cnVjdGlvbiB0aGF0IGNhbiBiZSBwYXRjaGVkIHRvIGFuIGFkZFB0cgorICAgIC8vIHNvIHRo
YXQ6CisgICAgLy8KKyAgICAvLyBsb2FkUHRyKEFkZHJlc3MoYSwgaSksIGIpCisgICAgLy8KKyAg
ICAvLyBiZWNvbWVzOgorICAgIC8vCisgICAgLy8gYWRkUHRyKFRydXN0ZWRJbW1QdHIoaSksIGEs
IGIpCisgICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgeworICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CisgICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAg
ICAgCisgICAgcHVibGljOgorICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCgpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwoQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSkKKyAgICAgICAgICAgIDog
bV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQXNzZW1i
bGVyTGFiZWwgbV9sYWJlbDsKKyAgICB9OwogCiAgICAgLy8gRGF0YUxhYmVsUHRyOgogICAgIC8v
CkBAIC01NjIsNiArNTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBt
X2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisjZWxzZQorICAgIExhYmVsIGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
CisgICAgeworICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAg
ICBMYWJlbCBsYWJlbCgpCkBAIC02NzIsNiArNzA3LDE2IEBAIHByb3RlY3RlZDoKICAgICB7CiAg
ICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpyZWFkUG9pbnRlcihkYXRhTGFiZWxQdHIuZGF0
YUxvY2F0aW9uKCkpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExv
YWQoQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkp
OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsOwogY2xh
c3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDsKIGNsYXNzIENvZGVMb2NhdGlvbkRhdGFM
YWJlbDMyOwogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyOworY2xhc3MgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkOwogCiAvLyBUaGUgQ29kZUxvY2F0aW9uKiB0eXBlcyBhcmUgYWxs
IHByZXR0eSBtdWNoIGRvLW5vdGhpbmcgd3JhcHBlcnMgYXJvdW5kCiAvLyBDb2RlUHRyIChvciBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIsIHRvIGdpdmUgaXQgaXRzIGZ1bGwgbmFtZSkuICBUaGVzZQpA
QCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRh
dGFMYWJlbFB0ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJl
bDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KGludCBv
ZmZzZXQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUxvY2F0aW9uQ29tbW9uKCkKQEAgLTE0Niw2
ICsxNDgsMTUgQEAgcHVibGljOgogICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQogfTsKIAorY2xhc3MgQ29kZUxvY2F0aW9uQ29u
dmVydGlibGVMb2FkIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CitwdWJsaWM6CisgICAg
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CisgICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKKyAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHsgfQorICAgIGV4cGxpY2l0IENvZGVM
b2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKKyAgICAgICAgOiBDb2RlTG9j
YXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGxvY2F0aW9uKSkgeyB9Cit9OworCiBp
bmxpbmUgQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVj
dGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VU
KG9mZnNldCk7CkBAIC0xOTQsNiArMjA1LDEyIEBAIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0IENvZGUKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOwogfQogCitp
bmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29u
dmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBBU1NFUlRfVkFMSURfQ09E
RV9PRkZTRVQob2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2Fk
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBMaW5rQnVmZmVyOjpDb2Rl
UmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgCiAgICAgZGF0YUxvZygiICAgIENvZGUgYXQg
WyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNp
emUoKSk7CiAgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJlc3VsdC5jb2RlKCksIG1fc2l6ZSwg
IiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQotICAgICAgICBkYXRhTG9nKCIgICAgICAgIDxubyBk
aXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgPG5vIGRp
c2Fzc2VtYmx5IGF2YWlsYWJsZT5cbiIpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTGlua0J1ZmZlciB7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxD
b21wYWN0OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJl
bDMyOwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQ
dHI7CisgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29u
dmVydGlibGVMb2FkTGFiZWw7CiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVm
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOwpAQCAtMTgwLDYgKzE4
MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21w
YWN0KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQo
bGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKKyAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxv
YWQgbG9jYXRpb25PZihDb252ZXJ0aWJsZUxvYWRMYWJlbCBsYWJlbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXI6OmdldExp
bmtlckFkZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOworICAgIH0K
KwogICAgIC8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBj
YWxsLCBnaXZlbiBhcyBhbiBvZmZzZXQgZnJvbQogICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgY29k
ZS4KICAgICB1bnNpZ25lZCByZXR1cm5BZGRyZXNzT2Zmc2V0KENhbGwgY2FsbCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNjAwLDYgKzYwMCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQorICAg
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49MCAmJiBh
ZGRyZXNzLm9mZnNldCA8PSAyNTUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJXaWRlOEJpdElt
bWVkaWF0ZShkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTIxODY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisgICAgQ29udmVydGlibGVM
b2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29udmVy
dGlibGVMb2FkTGFiZWwodGhpcyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoYWRkcmVz
cy5tX3B0ciwgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHZvaWQgbG9hZFB0cihCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9t
cihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
MiwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9s
aW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aExvYWQobGFiZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBsYWJlbCkKKyAgICB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJl
bCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkIGxhYmVsLCBib29sIGlzQWN0aXZlKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzQWN0aXZlKQorICAgICAgICAgICAgcmVwbGFjZVdpdGhMb2FkKGxhYmVsKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
bGFiZWwpOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksNDIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gNTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2Fk
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICBpZiAoKCpwdHIgJiB+MTUpID09IFBSRV9SRVgpCisgICAgICAgICAgICBw
dHIrKzsKKyNlbmRpZgorICAgICAgICBzd2l0Y2ggKCpwdHIpIHsKKyAgICAgICAgY2FzZSBPUF9N
T1ZfR3ZFdjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAg
ICAgICAgICpwdHIgPSBPUF9NT1ZfR3ZFdjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmICgoKnB0ciAmIH4xNSkgPT0gUFJFX1JFWCkKKyAgICAgICAgICAgIHB0
cisrOworI2VuZGlmCisgICAgICAgIHN3aXRjaCAoKnB0cikgeworICAgICAgICBjYXNlIE9QX01P
Vl9HdkV2OgorICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE9QX0xFQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFi
ZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBvcCA9ICJn
ZXRfYnlfaWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX291dF9vZl9saW5lIjsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAgb3AgPSAiZ2V0X2J5X2lk
X3NlbGYiOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTAzNiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfc2VsZjoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG86CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2NoYWlu
OgpAQCAtMTA1OSw2ICsxMDYzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9w
KGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9vdXRfb2ZfbGluZSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfcmVwbGFjZTog
ewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3JlcGxhY2UiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSwxMCArMTA3OSwxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTIwMjksNyArMjA0NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSkgewogICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAg
ICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQpA
QCAtMjAzOSw2ICsyMDU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0X291dF9vZl9saW5lOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgICAg
ICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQo
KSkKICAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
N10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lm
aWNWYWx1ZSk7Ci0gICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwogICAgIAogICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2Us
IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwpAQCAtODgs
NyArODgsNyBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihHZXRCCiAgICAg
ICAgIAogICAgIHJlc3VsdC5tX29mZnNldCA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKICAgICAg
ICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVk
LCBzcGVjaWZpY1ZhbHVlKTsKLSAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQor
ICAgIGlmICghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKQogICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKQEAg
LTE1NiwxMiArMTU2LDEyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAh
PSBub3RGb3VuZCkgeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQp
KSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVl
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBu
b3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkKICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTc2LDExICsxNzYsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgCiAgICAgICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAg
ICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAgICAg
UHJvcGVydHlPZmZzZXQgbXlPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgICAgICAg
ICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobXlPZmZzZXQg
PT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RGb3Vu
ZDsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChteU9mZnNldCkpIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTE4OCw3ICsx
ODgsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbXlPZmZzZXQ7CiAgICAgICAgICAgICAgICAgcmVz
dWx0Lm1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBteU9mZnNldCkgewotICAgICAgICAgICAg
ICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOworICAgICAgICAgICAgICAgIHJlc3VsdC5t
X29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgIT0gSlNWYWx1ZShzcGVjaWZp
Y1ZhbHVlKSkKICAgICAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1
ZSgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcigKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJl
KTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdC5t
X29mZnNldCAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQocmVzdWx0Lm1f
b2Zmc2V0KSkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQuc2l6ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIzLDExICsyMjMsMTEgQEAgR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICAgICAgCiAgICAgZGVm
YXVsdDoKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3VuZCk7CisgICAg
ICAgIEFTU0VSVCghaXNWYWxpZE9mZnNldChyZXN1bHQubV9vZmZzZXQpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpIHsK
KyAgICBpZiAoIWlzVmFsaWRPZmZzZXQocmVzdWx0Lm1fb2Zmc2V0KSkgewogICAgICAgICByZXN1
bHQubV9zdGF0ZSA9IFRha2VzU2xvd1BhdGg7CiAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNl
dC5jbGVhcigpOwogICAgICAgICByZXN1bHQubV9jaGFpbi5jbGVhcigpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAx
MjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEdldEJ5SWRTdGF0dXNf
aAogI2RlZmluZSBHZXRCeUlkU3RhdHVzX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0Lmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAK
QEAgLTQ2LDEzICs0NywxMyBAQCBwdWJsaWM6CiAKICAgICBHZXRCeUlkU3RhdHVzKCkKICAgICAg
ICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCi0gICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQp
CisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIAog
ICAgIEdldEJ5SWRTdGF0dXMoCiAgICAgICAgIFN0YXRlIHN0YXRlLCBib29sIHdhc1NlZW5JbkpJ
VCwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQgPSBTdHJ1Y3R1cmVTZXQoKSwKLSAg
ICAgICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBK
U1ZhbHVlKCksIFZlY3RvcjxTdHJ1Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigp
KQorICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gaW52YWxpZE9mZnNldCwgSlNWYWx1ZSBzcGVjaWZp
Y1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4gY2hhaW4gPSBWZWN0b3I8U3Ry
dWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0
dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX2NoYWluKGNoYWluKQpAQCAtNzYsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJ1Y3R1
cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9IC8vIFJldHVybnMgZW1wdHkg
dmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzLgogICAgIEpTVmFsdWUgc3BlY2lmaWNW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZTsgfSAvLyBSZXR1cm5zIEpTVmFs
dWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2YWx1ZS4KLSAgICBzaXplX3Qgb2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogICAgIGJvb2wgd2FzU2VlbkluSklUKCkg
Y29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAgICAKQEAgLTg4LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgVmVjdG9yPFN0
cnVjdHVyZSo+IG1fY2hhaW47CiAgICAgSlNWYWx1ZSBtX3NwZWNpZmljVmFsdWU7Ci0gICAgc2l6
ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIGJvb2wgbV93
YXNTZWVuSW5KSVQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfdGhpcywgNSkg
LyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9ieV9pZCwg
OSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAgIG1hY3JvKG9wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZSwgOSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1h
Y3JvKG9wX2dldF9ieV9pZF9zZWxmLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3Byb3RvLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX2NoYWluLCA5KSAvKiBoYXMgdmFsdWUg
cHJvZmlsaW5nICovIFwKQEAgLTEyMiw5ICsxMjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1hY3JvKG9wX2dldF9zdHJpbmdfbGVuZ3RoLCA5KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9v
dXRfb2ZfbGluZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwg
OSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwK
KyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5l
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkg
XAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xp
bmUsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVs
X2J5X2lkLCA0KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEy
ICs0MywxMyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAKICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
OwogICAgIGlmICghc3RydWN0dXJlKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIAotICAgIGlm
IChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKLSAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxE
YXRhKCksIGlkZW50KTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lk
CisgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZF9vdXRfb2ZfbGluZSkgeworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgaW52YWxpZE9mZnNldCk7CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAs
IG9mZnNldCk7CiAgICAgfQpAQCAtNTYsMTYgKzU3LDE4IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICBBU1NFUlQoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBBU1NFUlQoaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
Ci0gICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbAorICAgICAgICAg
ICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
KTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUu
c3RydWN0dXJlLmdldCgpOwogICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9u
WzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CiAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CiAg
ICAgQVNTRVJUKGNoYWluKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJl
LT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwotICAgIGlmIChvZmZz
ZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuZXdT
dHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAg
aWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIAogICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
LCBjaGFpbiwgb2Zmc2V0KTsKICNlbHNlCkBAIC04Myw3ICs4Niw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIGlmIChw
cm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQp
OworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBp
bnZhbGlkT2Zmc2V0KTsKICAgICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBw
cm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJ
bmZvLnNlZW4pCkBAIC05NCwyNCArOTcsMjQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1
dF9ieV9pZF9yZXBsYWNlOiB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1
dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0
dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAg
ICAgICAgICAgICAgICAgU2ltcGxlUmVwbGFjZSwKICAgICAgICAgICAgICAgICBzdHViSW5mby51
LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksCiAgICAgICAgICAgICAg
ICAgMCwgMCwKICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgaW52YWxp
ZE9mZnNldCk7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0OiB7CiAgICAgICAgIEFTU0VSVChzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZp
b3VzU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24u
c3RydWN0dXJlLT5nZXQoCisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0dWJJbmZv
LnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5nZXQoCiAgICAgICAgICAgICAqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoCiAgICAgICAgICAgICAgICAgU2ltcGxlVHJhbnNpdGlv
biwKICAgICAgICAgICAgICAgICBzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3Vz
U3RydWN0dXJlLmdldCgpLApAQCAtMTE5LDE0ICsxMjIsMTQgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIHN0dWJJbmZvLnUucHV0QnlJ
ZFRyYW5zaXRpb24uY2hhaW4uZ2V0KCksCiAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IDAsIDAsIDAsIGludmFsaWRPZmZzZXQpOwogICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAw
LCAwLCBpbnZhbGlkT2Zmc2V0KTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBpbnZhbGlkT2Zm
c2V0KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHV0QnlJZFN0YXR1c19oCiAjZGVmaW5l
IFB1dEJ5SWRTdGF0dXNfaAogCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRl
IDx3dGYvTm90Rm91bmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX29sZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fbmV3U3RydWN0
dXJlKDApCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGFpbigwKQotICAgICAgICAsIG1fb2Zmc2V0
KG5vdEZvdW5kKQorICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgewogICAg
IH0KICAgICAKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiwKLSAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAg
ICAgICAgICwgbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlKQogICAgICAgICAsIG1fbmV3U3Ry
dWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1Bh
dGgpID09ICFtX29sZFN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVCgobV9zdGF0ZSAhPSBTaW1w
bGVUcmFuc2l0aW9uKSA9PSAhbV9uZXdTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoKG1fc3Rh
dGUgIT0gU2ltcGxlVHJhbnNpdGlvbikgPT0gIW1fc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBB
U1NFUlQoKG1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1Bh
dGgpID09IChtX29mZnNldCA9PSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKG1fc3RhdGUg
PT0gTm9JbmZvcm1hdGlvbiB8fCBtX3N0YXRlID09IFRha2VzU2xvd1BhdGgpID09IChtX29mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBQdXRCeUlkU3Rh
dHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYpOwpAQCAtOTAsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1
Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUNo
YWluOyB9Ci0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAg
ICAKIHByaXZhdGU6CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChD
b2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CkBAIC05OSw3
ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAg
U3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogbV9zdHJ1Y3R1
cmVDaGFpbjsKLSAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9u
IDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDE5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisjaWYgRU5BQkxFKExMSU5UKSB8fCBFTkFCTEUoSklUKQogc3RhdGljIFJlc29s
dmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvclN0cnVjdHVyZShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgdW5z
aWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAg
IHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCgKICAgICAgICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLCBp
ZGVudGlmaWVyLCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgaWYgKG9m
ZnNldCA9PSBub3RGb3VuZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKICAgICAg
ICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoKTsKICAgICAKICAgICByZXR1cm4gUmVzb2x2
ZUdsb2JhbFN0YXR1cyhSZXNvbHZlR2xvYmFsU3RhdHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zm
c2V0LCBzcGVjaWZpY1ZhbHVlKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpIHx8IEVOQUJM
RShKSVQpCiAKIHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEludChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRl
bnRpZmllcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZl
R2xvYmFsU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKIAogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUg
PHd0Zi9Ob3RGb3VuZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ2LDEyICs0NywxMiBAQCBw
dWJsaWM6CiAgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygpCiAgICAgICAgIDogbV9zdGF0ZShOb0lu
Zm9ybWF0aW9uKQogICAgICAgICAsIG1fc3RydWN0dXJlKDApCi0gICAgICAgICwgbV9vZmZzZXQo
bm90Rm91bmQpCisgICAgICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICB7CiAgICAg
fQogICAgIAogICAgIFJlc29sdmVHbG9iYWxTdGF0dXMoCi0gICAgICAgIFN0YXRlIHN0YXRlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDAsIHNpemVfdCBvZmZzZXQgPSBub3RGb3VuZCwKKyAgICAg
ICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMCwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0g
SlNWYWx1ZSgpKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQpAQCAtNzAsMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAgICBib29sIHRha2Vz
U2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7IH0KICAg
ICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJl
OyB9Ci0gICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBK
U1ZhbHVlIHNwZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljVmFsdWU7IH0K
IAogcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1
cmU7Ci0gICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0Owog
ICAgIEpTVmFsdWUgbV9zcGVjaWZpY1ZhbHVlOwogfTsgLy8gY2xhc3MgUmVzb2x2ZUdsb2JhbFN0
YXR1cwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywxNSArMTEzLDYgQEAgcHVi
bGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVz
LnNpemUoKTsgfQogICAgIAotICAgIGJvb2wgYWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3Jh
Z2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVj
dHVyZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzW2ldLT5p
c1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgLy8gQ2FsbCB0
aGlzIGlmIHlvdSBrbm93IHRoYXQgdGhlIHN0cnVjdHVyZSBzZXQgbXVzdCBjb25zaXN0IG9mIGV4
YWN0bHkKICAgICAvLyBvbmUgc3RydWN0dXJlLgogICAgIFN0cnVjdHVyZSogc2luZ2xldG9uU3Ry
dWN0dXJlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMjA0LDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludDhf
dCB2YWx1ZUdQUjsKICAgICAgICAgICAgICAgICBpbnQ4X3Qgc2NyYXRjaEdQUjsKICAgICAgICAg
ICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvRG9uZTsKKyAgICAgICAgICAgICAgICBpbnQzMl90
IGRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQ7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb1N0cnVjdENoZWNrOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TbG93
Q2FzZTsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2hlY2tJbW1Ub0NhbGw7CkBAIC0y
MTksNiArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IHN0cnVjdHVyZVRvQ29tcGFyZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qgc3RydWN0dXJlQ2hlY2s7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQxNl90IHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgZGlzcGxhY2VtZW50TGFi
ZWw7CiAjZWxzZQpAQCAtMjMwLDYgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgICAgICAgICB9IGdldDsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDE2X3Qgc3RydWN0dXJlVG9Db21wYXJlOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MTZfdCBwcm9wZXJ0eVN0b3JhZ2VMb2FkOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90IGRpc3BsYWNlbWVudExhYmVsOwog
I2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGJvb2wgdXNl
c1Jlc3VsdCwgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgdm9pZCBoYW5kbGVHZXRC
eU9mZnNldCgKICAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUs
IE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAotICAgICAgICBib29s
IHVzZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZzZXQpOworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCk7CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCiAgICAgICAgIGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKQEAgLTE2MzAsMjUgKzE2MzAs
MjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcgogCiB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeU9mZnNldCgKICAgICBpbnQgZGVzdGluYXRpb25PcGVy
YW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwKLSAgICBib29sIHVzZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZz
ZXQpCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIE5vZGVJbmRleCBwcm9wZXJ0
eVN0b3JhZ2U7Ci0gICAgc2l6ZV90IG9mZnNldE9mZnNldDsKLSAgICBpZiAodXNlSW5saW5lU3Rv
cmFnZSkgeworICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQogICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNP
YmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICB9IGVsc2UgeworICAgIGVsc2UK
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2Us
IGJhc2UpOwotICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwotICAgIH0KICAgICBzZXQoZGVzdGlu
YXRpb25PcGVyYW5kLAogICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgR2V0QnlPZmZz
ZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pLAogICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlKSk7CiAgICAgICAgIAogICAg
IFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgIHN0b3JhZ2VBY2Nlc3NE
YXRhLm9mZnNldCA9IG9mZnNldCArIG9mZnNldE9mZnNldDsKKyAgICBzdG9yYWdlQWNjZXNzRGF0
YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZlVG9CYXNlKG9mZnNldCk7CiAgICAgc3RvcmFnZUFjY2Vz
c0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CiAgICAgbV9ncmFwaC5t
X3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiB9CkBAIC0xNjc3
LDcgKzE2NzIsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAg
ICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChnZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOwog
ICAgIAotICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZTsKICAgICBpZiAoIWdldEJ5SWRTdGF0dXMu
Y2hhaW4oKS5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJl
ID0gZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKTsKICAg
ICAgICAgSlNPYmplY3QqIGN1cnJlbnRPYmplY3QgPSAwOwpAQCAtMTY4Niw5ICsxNjgwLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIGN1cnJlbnRT
dHJ1Y3R1cmUgPSBnZXRCeUlkU3RhdHVzLmNoYWluKClbaV07CiAgICAgICAgICAgICBiYXNlID0g
YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKGN1cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1
cmUpOwogICAgICAgICB9Ci0gICAgICAgIHVzZUlubGluZVN0b3JhZ2UgPSBjdXJyZW50U3RydWN0
dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpOwotICAgIH0gZWxzZQotICAgICAgICB1c2VJbmxp
bmVTdG9yYWdlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5hbGxBcmVVc2luZ0lubGlu
ZVByb3BlcnR5U3RvcmFnZSgpOworICAgIH0KICAgICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBi
dWdzIGxpa2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3
ZSBuZWVkIHRvCiAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIGJhc2Ugb2YgdGhlIG9yaWdpbmFsIGdl
dF9ieV9pZCBpcyBrZXB0IGFsaXZlIHVudGlsIHdlJ3JlIGRvbmUgd2l0aApAQCAtMTcwNyw4ICsx
Njk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICB9CiAgICAg
CiAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCi0gICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJl
ZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdXNlSW5saW5lU3RvcmFnZSwKLSAgICAg
ICAgZ2V0QnlJZFN0YXR1cy5vZmZzZXQoKSk7CisgICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwg
cHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cy5vZmZzZXQo
KSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQpAQCAt
MjE3Miw3ICsyMTYzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQoaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGdldEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5
X2lkKTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQKKyAgICAgICAgICAgICAgICAgICB8
fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBv
cF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2Rl
SW5kZXggYmFzZSA9IGdldChnZXRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJl
bWFwW2dldEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CkBAIC0yMjI1LDcgKzIyMTcsOCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dFNjb3BlZFZhciwgT3BJbmZvKHNsb3QpLCBnZXRTY29wZUNoYWluLCBnZXQoc291
cmNlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfc2NvcGVkX3Zhcik7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9nZXRf
YnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOiB7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JF
eGl0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwpAQCAtMjI0MSw4ICsyMjM0LDExIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
X291dF9vZl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZTogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2Ug
PSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkBAIC0yMjU5LDI1ICsyMjU1LDIw
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxl
UmVwbGFjZSgpKSB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwg
T3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJl
KCkpKSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAgICAg
ICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlm
IChwdXRCeUlkU3RhdHVzLm9sZFN0cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0
KCkpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSkpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNP
YmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAg
ICAgICAgICBvZmZzZXRPZmZzZXQgPSAwOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nl
c3NEYXRhLnNpemUoKSksIHByb3BlcnR5U3RvcmFnZSwgYmFzZSwgdmFsdWUpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nlc3NE
YXRhOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IHB1dEJ5SWRT
dGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgICAgICAgICAgICAgc3RvcmFnZUFj
Y2Vzc0RhdGEub2Zmc2V0ID0gaW5kZXhSZWxhdGl2ZVRvQmFzZShwdXRCeUlkU3RhdHVzLm9mZnNl
dCgpKTsKICAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVy
ID0gaWRlbnRpZmllck51bWJlcjsKICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWhhc0V4aXRTaXRlCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMu
aXNTaW1wbGVUcmFuc2l0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgcHV0QnlJZFN0
YXR1cy5vbGRTdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBwdXRCeUlk
U3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCisgICAgICAg
ICAgICAgICAgICAgICAgICYmIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPT0gcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmVDaGFpbklzU3RpbGxW
YWxpZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1dEJ5SWRTdGF0dXMub2xkU3RydWN0dXJlKCksCkBAIC0yMzA4LDE2ICsy
Mjk5LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0QnlJZFN0YXR1cy5uZXdTdHJ1Y3R1cmUoKSkp
KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXgg
cHJvcGVydHlTdG9yYWdlOwotICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzLm5ld1N0
cnVjdHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGlzSW5saW5lT2Zmc2V0KHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpKQogICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQ
cm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBvZmZzZXRPZmZzZXQg
PSAwOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAg
ICAgICAgICAgICAgICAgICBQdXRCeU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCkpLApAQCAtMjMyNiw3ICsyMzEyLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFn
ZUFjY2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUFj
Y2Vzc0RhdGEub2Zmc2V0ID0gcHV0QnlJZFN0YXR1cy5vZmZzZXQoKSArIG9mZnNldE9mZnNldDsK
KyAgICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQgPSBpbmRleFJlbGF0aXZl
VG9CYXNlKHB1dEJ5SWRTdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHN0b3JhZ2VB
Y2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0Rh
dGEpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI3MzgsOCArMjcyNCw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeU9mZnNldCgKICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGds
b2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIsIHN0
YXR1cy5zdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyTnVtYmVyLCBzdGF0dXMub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVOdW1iZXIrKzsgLy8g
U2tpcCBvdmVyIHRoZSB1bnVzZWQgZ2xvYmFsIHJlc29sdmUgaW5mby4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTIxODY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDkgKzExOSwxMyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGVPcGNvZGUoCiAgICAgY2FzZSBvcF9nZXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9z
Y29wZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfZ2V0X2ds
b2JhbF92YXI6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6CiAgICAgY2Fz
ZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3
Miw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICNlbmRpZgog
ICAgICAgICBpbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gZGlmZmVyZW5jZUJl
dHdlZW5Db2RlUHRyKGNhbGxSZXR1cm5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1f
cHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3Nsb3dQYXRoR2VuZXJhdG9yLT5sYWJlbCgpKSk7CiAgICAg
ICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihjYWxsUmV0dXJuTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX3Byb3BlcnR5
QWNjZXNzZXNbaV0ubV9kb25lKSk7CisgICAgICAgIGluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRv
U3RvcmFnZUxvYWQgPSBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY2FsbFJldHVybkxvY2F0aW9u
LCBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fcHJvcGVydHlT
dG9yYWdlTG9hZCkpOwogICAgICAgICBpbmZvLnBhdGNoLmRmZy5iYXNlR1BSID0gbV9wcm9wZXJ0
eUFjY2Vzc2VzW2ldLm1fYmFzZUdQUjsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZv
LnBhdGNoLmRmZy52YWx1ZUdQUiA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3ZhbHVlR1BSOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNz
UmVjb3JkIHsKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZUltbSwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1Bh
dGhHZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgZG9uZSwKQEAgLTE0OCw2ICsxNDksNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNv
cmQgewogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlSW1tLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNv
bnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IHRhZ0xvYWRPclN0b3JlLAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBwYXlsb2FkTG9hZE9yU3RvcmUsCiAgICAgICAgIFNs
b3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aEdlbmVyYXRvciwKQEAgLTE2MSw2ICsxNjMsNyBAQCBz
dHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICA6IG1fY29kZU9yaWdpbihjb2Rl
T3JpZ2luKQogICAgICAgICAsIG1fc3RydWN0dXJlSW1tKHN0cnVjdHVyZUltbSkKICAgICAgICAg
LCBtX3N0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNrKQorICAgICAgICAsIG1fcHJvcGVydHlT
dG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgICwgbV9sb2FkT3JTdG9yZShsb2FkT3JTdG9yZSkKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CkBAIC0xODIsNiArMTg1LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICBD
b2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRy
IG1fc3RydWN0dXJlSW1tOwogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc3Ry
dWN0dXJlQ2hlY2s7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIG1f
cHJvcGVydHlTdG9yYWdlTG9hZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxDb21wYWN0IG1fbG9hZE9yU3RvcmU7CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZp
c2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hD
YWxsKENvZGVCbG9jayogY28KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsLCBuZXdDYWxs
ZWVGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2VsZkFjY2VzcyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG9mZnNldCwgY29uc3QgRnVuY3Rpb25QdHIgJnNsb3dQYXRo
RnVuY3Rpb24sIGJvb2wgY29tcGFjdCkKK3N0YXRpYyB2b2lkIGRmZ1JlcGF0Y2hCeUlkU2VsZkFj
Y2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBjb25zdCBGdW5jdGlv
blB0ciAmc2xvd1BhdGhGdW5jdGlvbiwgYm9vbCBjb21wYWN0KQogewogICAgIFJlcGF0Y2hCdWZm
ZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCkBAIC01MiwxOCArNTIsMTkgQEAgc3RhdGlj
IHZvaWQgZGZnUmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZAogCiAgICAgLy8gUGF0Y2ggdGhlIHN0
cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNl
dCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3Ry
dWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9m
ZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCi0gICAgICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
Q29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0xvYWRPclN0b3Jl
KSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0KTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2
ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSk7CiAgICAgZWxzZQotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZz
ZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNW
YWx1ZSkgKiBvZmZzZXQpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZn
LmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uo
b2Zmc2V0KSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGlmIChjb21wYWN0KSB7Ci0g
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1Rh
Z0xvYWRPclN0b3JlKSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxDb21wYWN0
QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvUGF5bG9hZExvYWRPclN0b3Jl
KSwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChz
dHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBvZmZzZXRS
ZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9UYWdMb2FkT3JTdG9y
ZSksIHNpemVvZihKU1ZhbHVlKSAqIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZmcuZGVsdGFDYWxsVG9QYXlsb2FkTG9hZE9yU3RvcmUpLCBzaXplb2YoSlNWYWx1
ZSkgKiBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5k
ZWx0YUNhbGxUb1RhZ0xvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdl
KG9mZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykpOworICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2Fs
bFRvUGF5bG9hZExvYWRPclN0b3JlKSwgb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKG9m
ZnNldCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgdm9p
ZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZlCiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBh
dGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNh
c2VzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxh
YmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKIH0K
IAotc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YihFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBz
aXplX3QgY291bnQsIHNpemVfdCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlTG9j
YXRpb25MYWJlbCBzdWNjZXNzTGFiZWwsIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlTGFiZWws
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgc3R1YlJvdXRpbmUpCitzdGF0aWMgdm9pZCBnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHNpemVfdCBjb3VudCwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZUxvY2F0aW9uTGFiZWwgc3Vj
Y2Vzc0xhYmVsLCBDb2RlTG9jYXRpb25MYWJlbCBzbG93Q2FzZUxhYmVsLCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYmIHN0dWJSb3V0aW5lKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKQEAgLTEzOSwxMyArMTQwLDIzIEBAIHN0YXRpYyB2b2lk
IGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIKICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0
LT5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5h
ZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKSwgcmVzdWx0R1BSKTsKKyAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQob2Zmc2V0KSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikpLCByZXN1bHRHUFIpOworICAgICAgICBzdHViSml0LmxvYWRQdHIo
cHJvdG9PYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCksIHJlc3VsdEdQUik7CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCBy
ZXN1bHRUYWdHUFIpOwotICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgb2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHByb3RvT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCBy
ZXN1bHRUYWdHUFIpOworICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdl
KCksIHJlc3VsdEdQUik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKG9mZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdEdQ
Uik7CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBzdHViSml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOworICAg
ICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHN1Y2Nlc3MsIGZhaWw7CiAgICAgCkBAIC0yNTMsNyArMjY0LDcgQEAgc3RhdGljIGJv
b2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgIGlmIChzbG90LmNhY2hlZFByb3Bl
cnR5VHlwZSgpICE9IFByb3BlcnR5U2xvdDo6VmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNpemVfdCBjb3Vu
dCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFz
ZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzQ5LDEyICszNjAsMjAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRC
eUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgfHwgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUo
KSA9PSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbSkgewogICAgICAgICAgICAgaWYgKHNsb3QuY2FjaGVk
UHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSwgc2Ny
YXRjaEdQUik7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgICAgIHN0dWJK
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVk
T2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBv
ZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwor
I2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BS
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQ
Uik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3R1YkppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25DYWxsR2V0dGVyOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTM4NSwxMyArNDA0LDI3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxk
R2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgIGhhbmRsZXJDYWxsID0gc3R1YkppdC5j
YWxsKCk7CiAgICAgICAgICAgICBzdHViSml0Lmp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIy
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5j
YWNoZWRPZmZzZXQoKSkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgc3R1Ykpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSksIHJlc3VsdEdQUik7Ci0jZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQotICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0
VGFnR1BSKTsKLSAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNl
dCgpKSksIHJlc3VsdEdQUik7CisjZWxzZQorICAgICAgICAgICAgICAgIGlmIChiYXNlR1BSID09
IHJlc3VsdFRhZ0dQUikgeworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNh
Y2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgICAgICAgICBzdHViSml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpLCByZXN1bHRUYWdHUFIpOworICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90
LmNhY2hlZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgICAgIH0KKyNlbmRp
ZgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZM
aW5lU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAg
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IG9mZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgcmVzdWx0R1BSKTsK
KyNlbHNlCisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgp
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hl
ZE9mZnNldCgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMucGF5bG9hZCkpLCByZXN1bHRHUFIpOwogI2VuZGlmCisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAgICAgICAgICAgICBpc0RpcmVjdCA9IHRy
dWU7CiAgICAgICAgIH0KQEAgLTQ1MCw3ICs0ODMsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdl
dEJ5SURQcm90b0xpc3QoRXhlCiAgICAgCiAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKS5pc09i
amVjdCgpKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgIHNp
emVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VWYWx1ZSwgc2xv
dC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKCFjb3VudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTY3LDcgKzYwMCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQ
dXRSZXBsYWNlU3R1YigKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlciBzdHViSml0OwogICAgIAot
ICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRl
ZCB8fCAhc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKSkgeworICAgIGlmIChzY3Jh
dGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgKHdyaXRlQmFycmllck5lZWRlZCB8fCBpc091dE9m
TGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkpIHsKICAgICAgICAgc2NyYXRjaEdQUiA9
IFNwZWN1bGF0aXZlSklUOjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHZhbHVlR1BSKTsKICAg
ICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSB0cnVlOwogICAgICAgICBzdHViSml0LnB1c2go
c2NyYXRjaEdQUik7CkBAIC01ODYsMjAgKzYxOSwyMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVw
bGFjZVN0dWIoCiAjZW5kaWYKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChzdHJ1
Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAg
ICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVs
c2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsK
LSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOwor
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSkpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
aWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgIGlmIChp
c0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICBzdHViSml0LnN0
b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNh
Y2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1Ykpp
dC5zdG9yZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnN0b3Jl
MzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
KTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTY4NSwy
MCArNzE4LDIwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKIAogICAgIHN0
dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNVc2luZ0lubGlu
ZVN0b3JhZ2UoKSkKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cih2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGlmIChpc0lu
bGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0
cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVk
T2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0
b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBzbG90
LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZP
dXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZVB0
cih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5P
dXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7
CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBpZiAoc3RydWN0dXJlLT5pc1Vz
aW5nSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICsgc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAg
ICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKSB7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6
ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNp
emVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIHNsb3QuY2FjaGVkT2Zmc2V0KCkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZVRhZ0dQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgc2xvdC5jYWNoZWRPZmZzZXQo
KSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSkpOworICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCkBAIC03NTIsNyArNzg1LDcgQEAg
c3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gc2tpcCBvcHRpbWl6
aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAob2xk
U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpAQCAtODE1LDcgKzg0OCw3IEBAIHN0
YXRpYyBib29sIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIHNraXAgb3B0aW1pemlu
ZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYwotICAgICAgICAgICAgaWYgKG9sZFN0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vcm1hbGl6
ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxl
cjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdFBheWxvYWRHUFIpOworICAgIEpJVENv
bXBpbGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gbV9qaXQu
Y29udmVydGlibGVMb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBK
U09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2FkR1BSKTsK
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCB0YWdMb2FkV2l0aFBhdGNoID0gbV9q
aXQubG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0UGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0YUxh
YmVsQ29tcGFjdCBwYXlsb2FkTG9hZFdpdGhQYXRjaCA9IG1faml0LmxvYWQzMldpdGhDb21wYWN0
QWRkcmVzc09mZnNldFBhdGNoKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIs
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
LCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgfQogICAgIG1faml0LmFkZFByb3Bl
cnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKLSAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssCisgICAgICAgICAg
ICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgdGFnTG9hZFdpdGhQYXRjaCwgcGF5bG9hZExvYWRX
aXRoUGF0Y2gsIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsCiAgICAgICAgICAgICBzYWZlQ2Fz
dDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIp
LAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRQYXlsb2FkR1BSKSwgc2FmZUNh
c3Q8aW50OF90PihzY3JhdGNoR1BSKSwKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAKICAgICB3cml0ZUJhcnJpZXIoYmFzZVBheWxv
YWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVVzZSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nl
c3MsIHNjcmF0Y2hHUFIpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlUGF5bG9hZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICBKSVRDb21waWxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVy
dHlTdG9yYWdlTG9hZCA9IG1faml0LmNvbnZlcnRpYmxlTG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlUGF5bG9hZEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgp
KSwgc2NyYXRjaEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbDMyIHRhZ1N0b3JlV2l0
aFBhdGNoID0gbV9qaXQuc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVUYWdHUFIs
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFi
ZWwzMiBwYXlsb2FkU3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZTMyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaCh2YWx1ZVBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
KTsKIApAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFBy
b3BlcnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9D
b21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVy
ZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdCh0YWdTdG9yZVdpdGhQYXRjaC5sYWJl
bCgpKSwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxDb21wYWN0KHBheWxvYWRT
dG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25l
TGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZVBheWxvYWRHUFIpLApAQCAtMzU1MCw3ICszNTUw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zODkxLDggKzM4OTEsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBz
dHJ1Y3R1cmVzTm90TWF0Y2ggPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBGYXN0IGNhc2UKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVzdWx0UGF5bG9hZEdQUik7
CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc29sdmVJ
bmZvR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoR2xvYmFsUmVzb2x2ZUluZm8sIG9mZnNldCkpLCByZXNv
bHZlSW5mb0dQUik7CisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc091dE9mTGluZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVh
dGVyVGhhbk9yRXF1YWwsIHJlc29sdmVJbmZvR1BSLCBUcnVzdGVkSW1tMzIoaW5saW5lU3RvcmFn
ZUNhcGFjaXR5KSk7CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgaXNPdXRP
ZkxpbmUubGluaygmbV9qaXQpOworI2VuZGlmCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6QmFzZUluZGV4KHJlc3VsdFBheWxvYWRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21w
aWxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpCYXNlSW5kZXgocmVzdWx0UGF5bG9hZEdQUiwgcmVzb2x2ZUluZm9HUFIsIEpJVENv
bXBpbGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk3LDcgKzQ5Nyw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8KICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1
Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxl
cjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwogICAgIAotICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVy
dHlTdG9yYWdlKCkpLCByZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpDb252ZXJ0aWJsZUxv
YWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0KKyAgICAgICAgbV9qaXQuY29udmVydGlibGVM
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJl
bENvbXBhY3QgbG9hZFdpdGhQYXRjaCA9IG1faml0LmxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NP
ZmZzZXRQYXRjaChKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIDApLCByZXN1bHRHUFIp
OwogICAgIAogICAgIEpJVENvbXBpbGVyOjpMYWJlbCBkb25lTGFiZWwgPSBtX2ppdC5sYWJlbCgp
OwpAQCAtNTE3LDggKzUxOCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU8KICAgICB9CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAgICAgIFByb3Bl
cnR5QWNjZXNzUmVjb3JkKAotICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21w
YXJlLCBzdHJ1Y3R1cmVDaGVjaywgbG9hZFdpdGhQYXRjaCwgc2xvd1BhdGguZ2V0KCksCi0gICAg
ICAgICAgICBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGlu
dDhfdD4ocmVzdWx0R1BSKSwKKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29t
cGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gs
CisgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+
KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3VsdEdQUiksCiAgICAgICAgICAgICBzYWZl
Q2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLAogICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRU
b1NwaWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlB
Y2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aC5yZWxlYXNlKCkpOwpAQCAtNTM2LDcgKzUzNyw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KIAogICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2
YWx1ZUdQUiwgdmFsdWVVc2UsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNo
R1BSKTsKIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKKyAgICBK
SVRDb21waWxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdlTG9hZCA9Cisg
ICAgICAgIG1faml0LmNvbnZlcnRpYmxlTG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsK
ICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsMzIgc3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9y
ZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2godmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIDApKTsKIAogICAgIEpJVENvbXBpbGVyOjpMYWJlbCBkb25lTGFiZWwgPSBt
X2ppdC5sYWJlbCgpOwpAQCAtNTY2LDcgKzU2OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXpl
ZENhbGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZp
ZXIoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0KLSAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2Vz
cyhQcm9wZXJ0eUFjY2Vzc1JlY29yZChjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0
cnVjdHVyZUNoZWNrLCBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQYXRj
aC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwgc2FmZUNhc3Q8aW50OF90Pihi
YXNlR1BSKSwgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZUdQUiksIHNhZmVDYXN0PGludDhfdD4oc2Ny
YXRjaEdQUikpKTsKKyAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKKyAgICAgICAgUHJvcGVy
dHlBY2Nlc3NSZWNvcmQoCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAorICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQ
YXRoLmdldCgpLCBkb25lTGFiZWwsCisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNo
R1BSKSkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9
CiAKQEAgLTM1NzQsNyArMzU4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQ
cm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3Rv
cmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVz
dWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzg5MCw5ICszODk2
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlc0RvbnRNYXRjaCA9IG1faml0LmJyYW5jaFB0cihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAKICAgICAgICAgLy8g
RmFzdCBjYXNlCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlc3Vs
dEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXNvbHZl
SW5mb0dQUiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVz
b2x2ZUluZm9HUFIpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgocmVzdWx0R1BSLCByZXNvbHZlSW5mb0dQUiwgSklUQ29tcGlsZXI6OlNjYWxlUHRyKSwgcmVz
dWx0R1BSKTsKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzT3V0T2ZMaW5lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkdyZWF0ZXJU
aGFuT3JFcXVhbCwgcmVzb2x2ZUluZm9HUFIsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2Fw
YWNpdHkpKTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGlu
ZS5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkJhc2VJbmRleChyZXN1bHRHUFIsIHJlc29sdmVJbmZvR1BSLCBKSVRDb21waWxlcjo6U2NhbGVQ
dHIsIC1pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVv
ZihKU1ZhbHVlKSkpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjE4NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMDMsOCArMjEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSkpOwogICAgICAg
ICAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBw
b2ludGVyLgotICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihzaXplb2YoSlNPYmplY3QpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9q
aXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBDbGFzc1R5cGU6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKKyAgICAgICAgbV9qaXQu
c3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgQ2xhc3NUeXBlOjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSkpOwogICAgIH0KIAogICAgIC8vIEl0IGlzIGFjY2VwdGFibGUgdG8gaGF2ZSBzdHJ1Y3R1cmUg
YmUgZXF1YWwgdG8gc2NyYXRjaCwgc28gbG9uZyBhcyB5b3UncmUgZmluZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTQsNyArMzU0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KAogICAgIH0KIAogICAgIGlmIChpc0pTRmluYWxPYmplY3QoY2VsbCkpIHsKLSAgICAgICAgSlNP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7
CisgICAgICAgIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwq
PihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyMiw3ICsxODIyLDcgQEAgTkVWRVJfSU5M
SU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlRwogICAgICAgICBBU1NFUlQoc2xvdC5zbG90
QmFzZSgpLmlzT2JqZWN0KCkpOwogCiAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNP
YmplY3Qoc2xvdC5zbG90QmFzZSgpKTsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAKICAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBl
IGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5v
dCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KQEAgLTE4NTEsNyArMTg1MSw3IEBAIE5FVkVS
X0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHNpemVfdCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgc2l6ZV90IGNvdW50
ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lLCBiYXNlVmFsdWUsIHNsb3Quc2xv
dEJhc2UoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIGlmICghY291bnQpIHsKICAgICAg
ICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZW5lcmljKTsKQEAgLTMwNDUsNiAr
MzA0NSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAg
ICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV93aXRoX3RoaXMpOwogICAgICAgICBO
RVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQorICAgIERFRklORV9PUENPREUob3BfZ2V0X2J5X2lk
X291dF9vZl9saW5lKQogICAgIERFRklORV9PUENPREUob3BfZ2V0X2J5X2lkKSB7CiAgICAgICAg
IC8qIGdldF9ieV9pZCBkc3QocikgYmFzZShyKSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJRCkg
bm9wKG4pIG5vcChuKSBub3AobikKIApAQCAtMzUyNyw2ICszNTI4LDcgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICAgICBza2lwX2dldF9zdHJpbmdfbGVuZ3RoOgogICAgIGdvdG8gKigmJnNraXBf
cHV0X2J5X2lkKTsKICNlbmRpZgorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX291dF9v
Zl9saW5lKQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkKSB7CiAgICAgICAgIC8qIHB1
dF9ieV9pZCBiYXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBub3Aobikgbm9wKG4pIG5vcChu
KSBub3AobikgZGlyZWN0KGIpCiAKQEAgLTM1NjUsNiArMzU2Nyw4IEBAIHNraXBfaWRfY3VzdG9t
X3NlbGY6CiAjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdCkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRf
b2ZfbGluZSkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bF9vdXRfb2ZfbGluZSkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
KSB7CiAgICAgICAgIC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uIGJhc2UocikgcHJvcGVydHko
aWQpIHZhbHVlKHIpIG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVjdHVyZShzSUQpIHN0cnVjdHVy
ZUNoYWluKGNoYWluKSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAgICAgICAKQEAgLTM2MDUsNyAr
MzYwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgICAgICAgYmFzZU9iamVj
dC0+c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgqZ2xvYmFsRGF0
YSwgbmV3U3RydWN0dXJlKTsKIAogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHZQQ1szXS51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBDWzddLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gdlBDWzddLnUub3BlcmFuZDsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9i
amVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2JhbERhdGEsIGNvZGVCbG9jay0+aWRlbnRpZmll
cih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBvZmZzZXQsIGNh
bGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIApAQCAtMzYzOSw3ICszNjQzLDcgQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUNlbGwtPmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3Qo
YmFzZUNlbGwpOwogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBDWzVdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRp
b24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2JhbERhdGEsIGNvZGVCbG9jay0+
aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBv
ZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKQEAgLTM3MTcsNyArMzcyMSw3
IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIEpTVmFsdWUgZXhwZWN0ZWRTdWJzY3Jp
cHQgPSBjYWxsRnJhbWUtPnIoZXhwZWN0ZWQpLmpzVmFsdWUoKTsKICAgICAgICAgaW50IGluZGV4
ID0gY2FsbEZyYW1lLT5yKGkpLmkoKSAtIDE7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0OwotICAg
ICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gMDsK
ICAgICAgICAgaWYgKHN1YnNjcmlwdCA9PSBleHBlY3RlZFN1YnNjcmlwdCAmJiBiYXNlVmFsdWUu
aXNDZWxsKCkgJiYgKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkgPT0gaXQtPmNhY2hl
ZFN0cnVjdHVyZSgpKSAmJiBpdC0+Z2V0T2Zmc2V0KGluZGV4LCBvZmZzZXQpKSB7CiAgICAgICAg
ICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUoYXNPYmplY3QoYmFzZVZh
bHVlKS0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09E
RV9MRU5HVEgob3BfZ2V0X2J5X3BuYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChvcF9lcV9udWxsKQor
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9hcmd1bWVudHNfbGVuZ3Ro
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKQEAgLTMxOSw4ICszMjAsMTEgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdDoKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9i
eV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00NDEsNiArNDQ1
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfZGl2KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEpCisgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Z2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGgpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQpAQCAtNDc4
LDggKzQ4MywxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsX291dF9vZl9saW5lOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5
X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKQEAgLTUzNyw2ICs1
NDUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQu
c3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldFN0cnVj
dHVyZVRvQ29tcGFyZSkpOwogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVj
dHVyZUNoZWNrID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQ
YXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldFN0cnVjdHVyZUNoZWNr
KSk7CisgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9h
ZCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90UGF0aEJlZ2lu
TG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9wZXJ0eVN0b3JhZ2VMb2FkKSk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNw
bGFjZW1lbnRMYWJlbCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
aG90UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihnZXREaXNwbGFjZW1l
bnRMYWJlbCkpOwogI2Vsc2UKQEAgLTU1MCw2ICs1NTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
UHJvcGVydHlTdHViQ29tcGlsYXRpCiAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbCBob3RQYXRoQmVnaW5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZiho
b3RQYXRoQmVnaW4pOwogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0LnN0cnVjdHVy
ZVRvQ29tcGFyZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoaG90
UGF0aEJlZ2luTG9jYXRpb24sIGxpbmtCdWZmZXIubG9jYXRpb25PZihwdXRTdHJ1Y3R1cmVUb0Nv
bXBhcmUpKTsKKyAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS51LnB1dC5wcm9wZXJ0eVN0b3Jh
Z2VMb2FkID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRo
QmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb3BlcnR5U3RvcmFnZUxvYWQp
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpbmZvLnBhdGNoLmJhc2VsaW5lLnUucHV0
LmRpc3BsYWNlbWVudExhYmVsID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHB1dERpc3Bs
YWNlbWVudExhYmVsKSk7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZp
c2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBob3RQYXRoQmVnaW47CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWxQdHIgZ2V0U3RydWN0dXJlVG9Db21wYXJlOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBnZXRTdHJ1Y3R1cmVDaGVjazsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQ7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZ2V0RGlz
cGxhY2VtZW50TGFiZWw7CiAjZWxzZQpAQCAtMTg1LDE3ICsxODYsMjQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKIAogCi0gICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9w
ZXJ0eVN0dWJHZXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBob3RQYXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5m
bygKKyAgICAgICAgICAgIFByb3BlcnR5U3R1YkdldEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLAorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2ssCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdl
TG9hZCwKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIHN0cnVjdHVyZUNoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNw
bGFjZW1lbnRMYWJlbCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHB1dFJlc3VsdCkKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsLAog
I2Vsc2UKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJl
VG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjaywg
TWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxLCBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDIsIE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDEsCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsQ29tcGFjdCBkaXNwbGFjZW1lbnRMYWJlbDIsCiAjZW5kaWYKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBwdXRSZXN1bHQpCiAgICAgICAgICAgICA6IG1f
dHlwZShHZXRCeUlkKQogICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
CiAgICAgICAgICAgICAsIGhvdFBhdGhCZWdpbihob3RQYXRoQmVnaW4pCiAgICAgICAgICAgICAs
IGdldFN0cnVjdHVyZVRvQ29tcGFyZShzdHJ1Y3R1cmVUb0NvbXBhcmUpCiAgICAgICAgICAgICAs
IGdldFN0cnVjdHVyZUNoZWNrKHN0cnVjdHVyZUNoZWNrKQorICAgICAgICAgICAgLCBwcm9wZXJ0
eVN0b3JhZ2VMb2FkKHByb3BlcnR5U3RvcmFnZUxvYWQpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgICAgICwgZ2V0RGlzcGxhY2VtZW50TGFiZWwoZGlzcGxhY2VtZW50TGFiZWwpCiAjZWxz
ZQpAQCAtMjA2LDE1ICsyMTQsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJQ
dXRCeUlkX1QsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBo
b3RQYXRoQmVnaW4sCisgICAgICAgIFByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbygKKyAgICAg
ICAgICAgIFByb3BlcnR5U3R1YlB1dEJ5SWRfVCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIGhvdFBhdGhCZWdpbiwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlLAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNvbnZlcnRpYmxlTG9hZExhYmVsIHByb3BlcnR5U3RvcmFnZUxvYWQsCiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIg
c3RydWN0dXJlVG9Db21wYXJlLCBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxhY2Vt
ZW50TGFiZWwpCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxh
Y2VtZW50TGFiZWwKICNlbHNlCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVs
UHRyIHN0cnVjdHVyZVRvQ29tcGFyZSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3Bs
YWNlbWVudExhYmVsMSwgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIGRpc3BsYWNlbWVudExh
YmVsMikKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBkaXNwbGFjZW1l
bnRMYWJlbDEsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgZGlzcGxh
Y2VtZW50TGFiZWwyCiAjZW5kaWYKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIDogbV90eXBl
KFB1dEJ5SWQpCiAgICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKICAg
ICAgICAgICAgICwgaG90UGF0aEJlZ2luKGhvdFBhdGhCZWdpbikKKyAgICAgICAgICAgICwgcHJv
cGVydHlTdG9yYWdlTG9hZChwcm9wZXJ0eVN0b3JhZ2VMb2FkKQogICAgICAgICAgICAgLCBwdXRT
dHJ1Y3R1cmVUb0NvbXBhcmUoc3RydWN0dXJlVG9Db21wYXJlKQogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgICAgICAsIHB1dERpc3BsYWNlbWVudExhYmVsKGRpc3BsYWNlbWVudExhYmVsKQpA
QCAtMjk1LDQwICszMDksNDAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
SklUKGdsb2JhbERhdGEsIGNvZGVCbG9jaykucHJpdmF0ZUNvbXBpbGUoZnVuY3Rpb25FbnRyeUFy
aXR5Q2hlY2ssIGVmZm9ydCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21w
aWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQorICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgY29kZUJs
b2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1YkluZm8tPmJ5dGVj
b2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oc3R1
YkluZm8sIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBpZGVudCwgc2xvdCwgY2FjaGVk
T2Zmc2V0LCByZXR1cm5BZGRyZXNzLCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAgICAgICAg
c3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBpbnQg
Y3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAg
ICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRTZWxmTGlzdChKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLCBp
bnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zm
c2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9j
ayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZvLT5ieXRlY29k
ZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KHN0
dWJJbmZvLCBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBp
ZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlR2V0QnlJZFByb3RvTGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZUxpc3QsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKKyAgICAgICAgc3RhdGljIHZv
aWQgY29tcGlsZUdldEJ5SWRQcm90b0xpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1
Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkKICAgICAgICAg
ewogICAgICAgICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAg
ICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKICAgICAg
ICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qoc3R1YkluZm8sIHByb3Rv
dHlwZVN0cnVjdHVyZUxpc3QsIGN1cnJlbnRJbmRleCwgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1
Y3R1cmUsIGlkZW50LCBzbG90LCBjYWNoZWRPZmZzZXQsIGNhbGxGcmFtZSk7CiAgICAgICAgIH0K
LSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRP
ZmZzZXQpCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgaW50IGN1cnJlbnRJbmRleCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0
eU9mZnNldCBjYWNoZWRPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xv
YmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0g
c3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkQ2hhaW5MaXN0KHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBjdXJyZW50
SW5kZXgsIHN0cnVjdHVyZSwgY2hhaW4sIGNvdW50LCBpZGVudCwgc2xvdCwgY2FjaGVkT2Zmc2V0
LCBjYWxsRnJhbWUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZUdl
dEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBj
YWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKKyAgICAgICAgc3Rh
dGljIHZvaWQgY29tcGlsZUdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KGdsb2JhbERhdGEs
IGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9mZnNldCA9IHN0dWJJbmZv
LT5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIGNoYWluLCBjb3VudCwgaWRlbnQsIHNsb3QsIGNhY2hl
ZE9mZnNldCwgcmV0dXJuQWRkcmVzcywgY2FsbEZyYW1lKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCisgICAgICAgIHN0YXRpYyB2b2lkIGNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgYm9vbCBkaXJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFs
RGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlT2Zmc2V0ID0gc3R1
YkluZm8tPmJ5dGVjb2RlSW5kZXg7CkBAIC0zNTgsOCArMzcyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYs
IFN0cnVjdHVyZVN0dWJJbmZvKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hQdXRC
eUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwotICAgICAgICBzdGF0aWMg
dm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxhY2Uo
Q29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6
ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBj
b2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpOworICAgICAgICBz
dGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYsIENvZGVCbG9jayog
Y29kZWJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCkBAIC0zNzcsMTIgKzM5MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKTsKICAgICAgICAgSklUQ29kZSBwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5j
dGlvbkVudHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRpb25FZmZvcnQpOwotICAgICAgICB2b2lk
IHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJl
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBz
aXplX3QgY2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiwgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiwgaW50LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5
U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKLSAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0
cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90Jiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7Ci0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCk7CisgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQp
OworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJl
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3Qo
U3RydWN0dXJlU3R1YkluZm8qLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqLCBpbnQs
IFN0cnVjdHVyZSosIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zm
c2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVDaGFp
biosIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYs
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQ
dXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKIAogICAgICAgICBQYXNzUmVm
UHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1w
b2xpbmVzKEpTR2xvYmFsRGF0YSosIFRyYW1wb2xpbmVTdHJ1Y3R1cmUqKTsKICAgICAgICAgTGFi
ZWwgcHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKEpTR2xvYmFsRGF0YSosIGJvb2wgaXNDb25z
dHJ1Y3QgPSBmYWxzZSk7CkBAIC00MzYsNiArNDUwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpIHsgfQogI2VuZGlmCiAKKyAgICAgICAg
ZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CisKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludCh1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQmIG9wLCBpbnQzMl90
JiBjb25zdGFudCk7CiAKQEAgLTQ2OCwxMCArNDg0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRIb3RQYXRoKCk7CiAgICAgICAgIHZvaWQgY29tcGls
ZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVy
KiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgYm9vbCBpc01l
dGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQ
YXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJ
RCByZXN1bHRQYXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCBjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcs
IFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQpOwotICAgICAgICB2
b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZh
bHVlVGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Cisg
ICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09i
amVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9h
ZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lz
dGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSA9
IE1heUJlRmluYWwpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVlUGF5bG9hZCwg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKIAogICAgICAgICAvLyBBcml0aG1ldGljIG9w
Y29kZSBoZWxwZXJzCiAgICAgICAgIHZvaWQgZW1pdEFkZDMyQ29uc3RhbnQodW5zaWduZWQgZHN0
LCB1bnNpZ25lZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0VHlwZSBvcFR5cGUpOwpAQCAt
NTQ3LDEwICs1NjMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjb21waWxl
R2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKik7CiAgICAgICAgIHZvaWQg
Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVu
dGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgYm9v
bCBpc01ldGhvZENoZWNrID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCk7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lk
IGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7Ci0gICAgICAgIHZvaWQg
Y29tcGlsZVB1dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWUs
IHNpemVfdCBjYWNoZWRPZmZzZXQpOworICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0
KiBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsK
KyAgICAgICAgdm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBSZWdpc3RlcklEIHNjcmF0Y2gsIEZp
bmFsT2JqZWN0TW9kZSA9IE1heUJlRmluYWwpOworICAgICAgICB2b2lkIGNvbXBpbGVQdXREaXJl
Y3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQpOwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9u
IDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MjksMTEgKzQyOSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
bGFzc1R5cGUsIGJvb2wgZGVzdHIKICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRy
ZXNzKHJlc3VsdCwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSkpOwogCiAgICAgLy8g
aW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCi0gICAgaWYg
KENsYXNzVHlwZTo6aGFzSW5saW5lU3RvcmFnZSgpKSB7Ci0gICAgICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIoc2l6ZW9mKEpTT2JqZWN0KSksIHJlc3VsdCwgc3RvcmFnZVB0cik7Ci0gICAgICAgIHN0
b3JlUHRyKHN0b3JhZ2VQdHIsIEFkZHJlc3MocmVzdWx0LCBDbGFzc1R5cGU6Om9mZnNldE9mUHJv
cGVydHlTdG9yYWdlKCkpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIENsYXNzVHlwZTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSkpOworICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBD
bGFzc1R5cGU6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBz
dHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lv
biAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NCwxNiArNzk0LDE0IEBAIHZvaWQgSklUOjplbWl0X29w
X3Jlc29sdmVfZ2xvYmFsKEluc3RydWMKIAogCiAgICAgLy8gVmVyaWZ5IHN0cnVjdHVyZS4KLSAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDApOworICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KHJlc29sdmVJbmZvQWRkcmVzcyksIHJlZ1QzKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMs
IE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgc3RydWN0dXJlKSksIHJlZ1QxKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpKSk7CiAKICAgICAvLyBMb2FkIHByb3BlcnR5LgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSkpLCBy
ZWdUMik7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDMsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxS
ZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlZ1QzKTsKLSAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1Qy
LCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVnVDApOyAvLyBwYXlsb2FkCi0gICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMiwg
cmVnVDMsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcp
KSwgcmVnVDEpOyAvLyB0YWcKKyAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QyLCByZWdU
MSwgcmVnVDAsIHJlZ1QzLCBLbm93bk5vdEZpbmFsKTsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKCk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRl
Y29kZU9mZnNldCArIChkeW5hbWljID8gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljKSA6IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV9nbG9iYWwpKSwgZHN0LCByZWdUMSwg
cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsOSArNzAxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cmVzb2x2ZV9nbG9iYWwoSW5zdHJ1YwogCiAgICAgLy8gTG9hZCBjYWNoZWQgcHJvcGVydHkKICAg
ICAvLyBBc3N1bWUgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBhbHdheXMgdXNlcyBleHRlcm5hbCBz
dG9yYWdlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTR2xv
YmFsT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSkpLCByZWdUMCk7CiAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJl
Z1QxKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMCwgcmVnVDEsIFNjYWxlUHRyKSwgcmVn
VDApOworICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDAsIHJlZ1QwLCByZWdUMSwgcmVn
VDAsIEtub3duTm90RmluYWwpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3
ICs5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbioKIHZvaWQg
SklUOjplbWl0X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIC8vIEFzc2VydCB0aGF0IHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24gaXMgYSBn
ZXRfYnlfaWQuCi0gICAgQVNTRVJUKG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50
SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkg
PT0gb3BfZ2V0X2J5X2lkKTsKKyAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
KGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUu
b3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQKKyAgICAgICAgfHwgbV9pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNr
KSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOwogICAgIAogICAgIGN1
cnJlbnRJbnN0cnVjdGlvbiArPSBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjayk7CiAgICAg
CkBAIC0zMzMsNyArMzM0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCgpCiAg
ICAgUGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQq
PihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwogICAgIGFkZFNsb3dDYXNlKHN0cnVj
dHVyZUNoZWNrKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0Ojpv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgcmVnVDIpOworICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHByb3BlcnR5U3RvcmFnZUxvYWQgPSBjb252ZXJ0aWJsZUxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgcmVnVDIpOwogICAgIERh
dGFMYWJlbENvbXBhY3QgZGlzcGxhY2VtZW50TGFiZWwxID0gbG9hZFB0cldpdGhDb21wYWN0QWRk
cmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDIsIHBhdGNoR2V0QnlJZERlZmF1bHRPZmZzZXQp
LCByZWdUMCk7IC8vIHBheWxvYWQKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExh
YmVsMiA9IGxvYWRQdHJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzKHJlZ1Qy
LCBwYXRjaEdldEJ5SWREZWZhdWx0T2Zmc2V0KSwgcmVnVDEpOyAvLyB0YWcKICAgICAKQEAgLTM0
MSw3ICszNDIsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRIb3RQYXRoKCkKICAgICAKICAg
ICBFTkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAot
ICAgIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNv
bXBpbGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQ
YXRoQmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVu
dExhYmVsMSwgZGlzcGxhY2VtZW50TGFiZWwyLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5
QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8o
UHJvcGVydHlTdHViR2V0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1
Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNw
bGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMiwgcHV0UmVzdWx0KSk7CiB9CiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTM5OSw3ICs0
MDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgRGF0
YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHJX
aXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKSk7CiAgICAgCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJl
Z1QxKTsKKyAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29u
dmVydGlibGVMb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGlu
ZVN0b3JhZ2UoKSksIHJlZ1QxKTsKICAgICBEYXRhTGFiZWwzMiBkaXNwbGFjZW1lbnRMYWJlbDEg
PSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDIsIEFkZHJlc3MocmVnVDEsIHBh
dGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsgLy8gcGF5bG9hZAogICAgIERhdGFMYWJlbDMyIGRp
c3BsYWNlbWVudExhYmVsMiA9IHN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChyZWdUMywg
QWRkcmVzcyhyZWdUMSwgcGF0Y2hQdXRCeUlkRGVmYXVsdE9mZnNldCkpOyAvLyB0YWcKICAgICAK
QEAgLTQwNyw3ICs0MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qCiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMiwgcmVnVDEsIHJlZ1QyLCBT
aG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAK
LSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJD
b21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90
UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIGRpc3BsYWNlbWVudExhYmVsMSwgZGlzcGxh
Y2VtZW50TGFiZWwyKSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5hcHBl
bmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQsIG1fYnl0
ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBwcm9wZXJ0eVN0
b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbDEsIGRpc3BsYWNlbWVudExhYmVsMikpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC00MzAs
MzAgKzQzMSw0MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiB9
CiAKIC8vIENvbXBpbGUgYSBzdG9yZSBpbnRvIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2Uu
ICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZVB1dERpcmVjdE9mZnNldChS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQYXls
b2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHZhbHVl
UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQogewotICAgIGludCBvZmZzZXQg
PSBjYWNoZWRPZmZzZXQ7Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7Ci0gICAgZW1pdFN0b3JlKG9mZnNldCwgdmFs
dWVUYWcsIHZhbHVlUGF5bG9hZCwgYmFzZSk7CisgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KGNh
Y2hlZE9mZnNldCkpCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBlbWl0U3RvcmUoaW5kZXhSZWxh
dGl2ZVRvQmFzZShjYWNoZWRPZmZzZXQpLCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkLCBiYXNlKTsK
IH0KIAogLy8gQ29tcGlsZSBhIGxvYWQgZnJvbSBhbiBvYmplY3QncyBwcm9wZXJ0eSBzdG9yYWdl
LiAgTWF5IG92ZXJ3cml0ZSBiYXNlLgotdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQ
YXlsb2FkLCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCBy
ZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9m
ZnNldCA9IGNhY2hlZE9mZnNldDsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0
KSkgeworICAgICAgICBlbWl0TG9hZChpbmRleFJlbGF0aXZlVG9CYXNlKGNhY2hlZE9mZnNldCks
IHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgYmFzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCiAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gcmVzdWx0UGF5bG9hZDsKLSAgICBsb2FkUHRy
KEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCB0ZW1w
KTsKLSAgICBlbWl0TG9hZChvZmZzZXQsIHJlc3VsdFRhZywgcmVzdWx0UGF5bG9hZCwgdGVtcCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHRlbXApOworICAgIGVtaXRMb2FkKGluZGV4UmVsYXRpdmVUb0Jhc2UoY2FjaGVk
T2Zmc2V0KSwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkLCB0ZW1wKTsKIH0KIAotdm9pZCBKSVQ6
OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCBy
ZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0KQogewotICAgIGxvYWRQdHIoYmFzZS0+YWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCks
IHJlc3VsdFRhZyk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVzdWx0VGFnLCBjYWNoZWRPZmZzZXQg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOwotICAgIGxvYWQzMihBZGRyZXNz
KHJlc3VsdFRhZywgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7Cisg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpIHsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGJhc2UtPmxvY2F0aW9uRm9yT2Zmc2V0KGNhY2hlZE9mZnNldCkpLCByZXN1bHRU
YWcpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQpOworICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhyZXN1bHRUYWcsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBsb2Fk
UHRyKGJhc2UtPmFkZHJlc3NPZk91dE9mTGluZVN0b3JhZ2UoKSwgcmVzdWx0VGFnKTsKKyAgICBs
b2FkMzIoQWRkcmVzcyhyZXN1bHRUYWcsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRP
ZmZzZXQpICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKKyAgICBsb2FkMzIo
QWRkcmVzcyhyZXN1bHRUYWcsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShjYWNoZWRPZmZzZXQp
ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZyk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBzaXplX3QgY2FjaGVk
T2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNp
dGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9v
bCBkaXJlY3QpCiB7CiAgICAgLy8gVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyB0aGF0IHJlZ1QwIGNv
bnRhaW5zIHRoZSBiYXNlUGF5bG9hZCBhbmQgcmVnVDEgY29udGFpbnMgdGhlIGJhc2VUYWcuIFJl
c3RvcmUgdGhlbSBmcm9tIHRoZSBzdGFjay4KICNpZiBDUFUoTUlQUykgfHwgQ1BVKFNINCkgfHwg
Q1BVKEFSTSkKQEAgLTQ4OSw3ICs1MDEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRC
eUlkVHJhbnNpdGlvCiAgICAgCiAgICAgLy8gUmVhbGxvY2F0ZSBwcm9wZXJ0eSBzdG9yYWdlIGlm
IG5lZWRlZC4KICAgICBDYWxsIGNhbGxUYXJnZXQ7Ci0gICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VS
ZWFsbG9jID0gb2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKKyAgICBib29sIHdpbGxOZWVkU3Rv
cmFnZVJlYWxsb2MgPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gbmV3U3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmICh3aWxsTmVlZFN0b3JhZ2VSZWFs
bG9jKSB7CiAgICAgICAgIC8vIFRoaXMgdHJhbXBvbGluZSB3YXMgY2FsbGVkIHRvIGxpa2UgYSBK
SVQgc3R1YjsgYmVmb3JlIHdlIGNhbiBjYW4gY2FsbCBhZ2FpbiB3ZSBuZWVkIHRvCiAgICAgICAg
IC8vIHJlbW92ZSB0aGUgcmV0dXJuIGFkZHJlc3MgZnJvbSB0aGUgc3RhY2ssIHRvIHByZXZlbnQg
dGhlIHN0YWNrIGZyb20gYmVjb21pbmcgbWlzYWxpZ25lZC4KQEAgLTQ5OSw3ICs1MTEsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgICAgIHN0dWJDYWxs
LnNraXBBcmd1bWVudCgpOyAvLyBiYXNlCiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgp
OyAvLyBpZGVudAogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQoKTsgLy8gdmFsdWUKLSAg
ICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKG9sZFN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChU
cnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSk7CiAgICAg
ICAgIHN0dWJDYWxsLmNhbGwocmVnVDApOwogCkBAIC01NTMsNyArNTY1LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
Q2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJ
bmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNl
bGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKK3ZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAg
ICAKQEAgLTU2MSwxNSArNTczLDE0IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVC
bG9jayogY28KICAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gSklUU3R1YnM6OmN0aV9vcF9n
ZXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVzdGluZyBy
aWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7CiAgICAg
Ci0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAqIGNhY2hlZE9mZnNldDsKLQogICAg
IC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9lcnR5IG1hcCB0byBsb2FkIGZyb20s
IHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZvci4KICAgICByZXBhdGNoQnVmZmVy
LnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJlKSwgc3RydWN0dXJl
KTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3Bs
YWNlbWVudExhYmVsMSksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNo
LmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVsMiksIG9mZnNldCArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCisgICAgcmVwYXRjaEJ1ZmZlci5z
ZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby0+aG90UGF0aEJlZ2luLmNvbnZlcnRp
YmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wcm9wZXJ0eVN0
b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSk7CisgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsQ29tcGFjdEF0
T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5kaXNwbGFjZW1lbnRMYWJlbDEp
LCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWxDb21wYWN0
QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LmRpc3BsYWNlbWVudExhYmVs
MiksIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpICsgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKIH0KIAotdm9pZCBKSVQ6
OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6
cGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewog
ICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgIApAQCAtNTc3
LDEyICs1ODgsMTEgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgog
ICAgIC8vIFNob3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1dCB0
aGF0IGRvZXNuJ3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0
cihkaXJlY3QgPyBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1dF9i
eV9pZF9nZW5lcmljKSk7CiAgICAgCi0gICAgaW50IG9mZnNldCA9IHNpemVvZihKU1ZhbHVlKSAq
IGNhY2hlZE9mZnNldDsKLQogICAgIC8vIFBhdGNoIHRoZSBvZmZzZXQgaW50byB0aGUgcHJvcG9l
cnR5IG1hcCB0byBsb2FkIGZyb20sIHRoZW4gcGF0Y2ggdGhlIFN0cnVjdHVyZSB0byBsb29rIGZv
ci4KICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRh
TGFiZWxQdHJBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuc3RydWN0dXJl
VG9Db21wYXJlKSwgc3RydWN0dXJlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbDEpLCBvZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOyAvLyBwYXlsb2FkCi0gICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVsMzJBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5wdXQuZGlzcGxhY2VtZW50TGFiZWwyKSwgb2Zmc2V0ICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKKyAgICByZXBh
dGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0
LnByb3BlcnR5U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsK
KyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRM
YWJlbDEpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7IC8vIHBheWxvYWQKKyAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwz
MkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJl
bDIpLCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCiB9CiAKIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzKQpAQCAtNjI5LDcgKzYzOSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBh
dGNoR2V0QXJyYXlMZW4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24o
cmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9hcnJheV9mYWlsKSk7
CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIApAQCAtNzAwLDcgKzcxMCw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHIKIH0KIAogCi12b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0
dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldCkKIHsKICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBKdW1wIGZh
aWx1cmVDYXNlID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CkBAIC03NjAsNyAr
NzcwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIHJl
cGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJv
dXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9s
ZHMgYSBKU0NlbGwqCiAgICAgCkBAIC04MjksNyArODM5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGp1bXBMb2Nh
dGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUuY29kZSgpKSk7CiB9CiAKLXZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVy
ZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4sIHNpemVfdCBjb3VudCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5
cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3QgY291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAg
ICAgQVNTRVJUKGNvdW50KTsKQEAgLTkwNCw3ICs5MTQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0
aW9uLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNv
dW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBz
aXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
Ly8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgQVNTRVJUKGNvdW50KTsKQEAgLTk3NSwxMyAr
OTg1LDI3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHIKICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRkcmVzcywgRnVuY3Rp
b25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0KSk7CiB9CiAKLXZvaWQgSklUOjpjb21w
aWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcs
IFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQpCit2b2lkIEpJVDo6
Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0
VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBGaW5hbE9i
amVjdE1vZGUgZmluYWxPYmplY3RNb2RlKQogewogICAgIEFTU0VSVChzaXplb2YoSlNWYWx1ZSkg
PT0gOCk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRP
ZlByb3BlcnR5U3RvcmFnZSgpKSwgYmFzZSk7Ci0gICAgbG9hZFB0cihCYXNlSW5kZXgoYmFzZSwg
b2Zmc2V0LCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5
bG9hZCkpLCByZXN1bHRQYXlsb2FkKTsKLSAgICBsb2FkUHRyKEJhc2VJbmRleChiYXNlLCBvZmZz
ZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwg
cmVzdWx0VGFnKTsKKyAgICBpZiAoZmluYWxPYmplY3RNb2RlID09IE1heUJlRmluYWwpIHsKKyAg
ICAgICAgSnVtcCBpc0lubGluZSA9IGJyYW5jaDMyKExlc3NUaGFuLCBvZmZzZXQsIFRydXN0ZWRJ
bW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJh
c2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIGJhc2UpOworICAgICAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGlzSW5saW5lLmxpbmsodGhpcyk7CisgICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tUHRyKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBiYXNl
KTsKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0gZWxzZSB7CisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJhbmNoMzIoR3JlYXRlclRoYW5P
ckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAg
ICAgICAgYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKHRoaXMpOworI2Vu
ZGlmCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICB9CisgICAgbG9hZDMyKEJhc2VJbmRleChiYXNl
LCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSAtIGlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
LCByZXN1bHRQYXlsb2FkKTsKKyAgICBsb2FkMzIoQmFzZUluZGV4KGJhc2UsIG9mZnNldCwgVGlt
ZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykgLSBpbmxpbmVT
dG9yYWdlQ2FwYWNpdHkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgcmVzdWx0VGFnKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xMDA2LDYgKzEwMzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
cG5hbWUoSW5zdHJ1Y3RpCiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSksIHJlZ1QzKTsKICAgICBz
dWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIHJlZ1QzLCBBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciwgbV9udW1DYWNoZWFibGVTbG90cykpKSk7CisgICAgYWRkMzIoQWRk
cmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fb2Zm
c2V0QmFzZSkpLCByZWdUMyk7CiAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdUMiwgcmVn
VDEsIHJlZ1QwLCByZWdUMyk7ICAgIAogICAgIAogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMCArMTUxLDI2
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKCk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0
KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgb2Zmc2V0LCBS
ZWdpc3RlcklEIHNjcmF0Y2gpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwgUmVnaXN0
ZXJJRCBzY3JhdGNoLCBGaW5hbE9iamVjdE1vZGUgZmluYWxPYmplY3RNb2RlKQogewotICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSks
IHNjcmF0Y2gpOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KHNjcmF0Y2gsIG9mZnNldCwgU2NhbGVQ
dHIsIDApLCByZXN1bHQpOworICAgIEFTU0VSVChzaXplb2YoSlNWYWx1ZSkgPT0gOCk7CisgICAg
CisgICAgaWYgKGZpbmFsT2JqZWN0TW9kZSA9PSBNYXlCZUZpbmFsKSB7CisgICAgICAgIEp1bXAg
aXNJbmxpbmUgPSBicmFuY2gzMihMZXNzVGhhbiwgb2Zmc2V0LCBUcnVzdGVkSW1tMzIoaW5saW5l
U3RvcmFnZUNhcGFjaXR5KSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoKTsKKyAgICAgICAgSnVtcCBk
b25lID0ganVtcCgpOworICAgICAgICBpc0lubGluZS5saW5rKHRoaXMpOworICAgICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIGlubGlu
ZVN0b3JhZ2VDYXBhY2l0eSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBiYXNlLCBzY3JhdGNo
KTsKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0gZWxzZSB7CisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJhbmNoMzIoR3JlYXRlclRoYW5P
ckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihpbmxpbmVTdG9yYWdlQ2FwYWNpdHkpKTsKKyAg
ICAgICAgYnJlYWtwb2ludCgpOworICAgICAgICBpc091dE9mTGluZS5saW5rKHRoaXMpOworI2Vu
ZGlmCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRP
ZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoKTsKKyAgICB9CisgICAgbG9hZFB0cihCYXNlSW5kZXgo
c2NyYXRjaCwgb2Zmc2V0LCBTY2FsZVB0ciwgLWlubGluZVN0b3JhZ2VDYXBhY2l0eSAqIHN0YXRp
Y19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKEpTVmFsdWUpKSksIHJlc3VsdCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMjgzLDcgKzI5OSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVj
dGlvbioKIHZvaWQgSklUOjplbWl0X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIC8vIEFzc2VydCB0aGF0IHRoZSBmb2xsb3dpbmcgaW5zdHJ1
Y3Rpb24gaXMgYSBnZXRfYnlfaWQuCi0gICAgQVNTRVJUKG1faW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykp
LT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkKTsKKyAgICBBU1NFUlQobV9pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9k
X2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQKKyAgICAgICAgfHwgbV9pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOwog
CiAgICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNr
KTsKICAgICB1bnNpZ25lZCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKQEAgLTM3MywxNCArMzkwLDE0IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBh
dGgoaW50IGJhc2UKICAgICBQYXRjaGFibGVKdW1wIHN0cnVjdHVyZUNoZWNrID0gcGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRTdHJ1Y3R1cmUpKSk7CiAgICAgYWRk
U2xvd0Nhc2Uoc3RydWN0dXJlQ2hlY2spOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHJlZ1QwKTsKKyAgICBDb252ZXJ0
aWJsZUxvYWRMYWJlbCBwcm9wZXJ0eVN0b3JhZ2VMb2FkID0gY29udmVydGlibGVMb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlZ1Qw
KTsKICAgICBEYXRhTGFiZWxDb21wYWN0IGRpc3BsYWNlbWVudExhYmVsID0gbG9hZFB0cldpdGhD
b21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MocmVnVDAsIHBhdGNoR2V0QnlJZERlZmF1
bHRPZmZzZXQpLCByZWdUMCk7CiAKICAgICBMYWJlbCBwdXRSZXN1bHQodGhpcyk7CiAKICAgICBF
TkRfVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoKTsKIAotICAg
IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uYXBwZW5kKFByb3BlcnR5U3R1YkNvbXBp
bGF0aW9uSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkLCBtX2J5dGVjb2RlT2Zmc2V0LCBob3RQYXRo
QmVnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIGRpc3BsYWNlbWVudExh
YmVsLCBwdXRSZXN1bHQpKTsKKyAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLmFw
cGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViR2V0QnlJZCwgbV9i
eXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVy
ZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCwgcHV0UmVzdWx0
KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
QEAgLTQ0MCwxNCArNDU3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVj
dGlvbioKICAgICBEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpKTsKIAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9y
YWdlKCkpLCByZWdUMik7CisgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcHJvcGVydHlTdG9yYWdl
TG9hZCA9IGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0
T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCByZWdUMik7CiAgICAgRGF0YUxhYmVsMzIgZGlzcGxhY2Vt
ZW50TGFiZWwgPSBzdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gocmVnVDEsIEFkZHJlc3Mo
cmVnVDIsIHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQpKTsKIAogICAgIEVORF9VTklOVEVSUlVQ
VEVEX1NFUVVFTkNFKHNlcXVlbmNlUHV0QnlJZCk7CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJl
Z1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJh
cnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAKLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRp
b25JbmZvLmFwcGVuZChQcm9wZXJ0eVN0dWJDb21waWxhdGlvbkluZm8oUHJvcGVydHlTdHViUHV0
QnlJZCwgbV9ieXRlY29kZU9mZnNldCwgaG90UGF0aEJlZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IGRpc3BsYWNlbWVudExhYmVsKSk7CisgICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5m
by5hcHBlbmQoUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKFByb3BlcnR5U3R1YlB1dEJ5SWQs
IG1fYnl0ZWNvZGVPZmZzZXQsIGhvdFBhdGhCZWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBwcm9w
ZXJ0eVN0b3JhZ2VMb2FkLCBkaXNwbGFjZW1lbnRMYWJlbCkpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC00NzEsMjggKzQ4OCw0MSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0CiAKIC8vIENvbXBpbGUgYSBz
dG9yZSBpbnRvIGFuIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIHRo
ZQogLy8gdmFsdWUgaW4gb2JqZWN0UmVnLgotdm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZz
ZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHZhbHVlLCBzaXplX3QgY2FjaGVkT2Zmc2V0
KQordm9pZCBKSVQ6OmNvbXBpbGVQdXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIHZhbHVlLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7Ci0gICAgaW50IG9m
ZnNldCA9IGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpLCBiYXNlKTsKLSAg
ICBzdG9yZVB0cih2YWx1ZSwgQWRkcmVzcyhiYXNlLCBvZmZzZXQpKTsKKyAgICBpZiAoaXNJbmxp
bmVPZmZzZXQoY2FjaGVkT2Zmc2V0KSkgeworICAgICAgICBzdG9yZVB0cih2YWx1ZSwgQWRkcmVz
cyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzaXplb2YoSlNWYWx1
ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zm
c2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBiYXNlKTsKKyAgICBzdG9yZVB0cih2YWx1ZSwgQWRk
cmVzcyhiYXNlLCBzaXplb2YoSlNWYWx1ZSkgKiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoY2Fj
aGVkT2Zmc2V0KSkpOwogfQogCiAvLyBDb21waWxlIGEgbG9hZCBmcm9tIGFuIG9iamVjdCdzIHBy
b3BlcnR5IHN0b3JhZ2UuICBNYXkgb3ZlcndyaXRlIGJhc2UuCi12b2lkIEpJVDo6Y29tcGlsZUdl
dERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KQog
ewotICAgIGludCBvZmZzZXQgPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgp
KSwgcmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBvZmZzZXQpLCByZXN1bHQp
OworICAgIGlmIChpc0lubGluZU9mZnNldChjYWNoZWRPZmZzZXQpKSB7CisgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBzaXpl
b2YoSlNWYWx1ZSkgKiBvZmZzZXRJbklubGluZVN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSksIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbG9hZFB0cihBZGRyZXNzKGJh
c2UsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHJlc3VsdCk7CisgICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgc2l6ZW9mKEpTVmFsdWUpICogb2Zmc2V0SW5PdXRPZkxp
bmVTdG9yYWdlKGNhY2hlZE9mZnNldCkpLCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6Y29tcGls
ZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVf
dCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVj
dCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCkK
IHsKLSAgICBsb2FkUHRyKGJhc2UtPmFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpLCByZXN1bHQp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIGNhY2hlZE9mZnNldCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVzdWx0KTsKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQoY2Fj
aGVkT2Zmc2V0KSkgeworICAgICAgICBsb2FkUHRyKGJhc2UtPmxvY2F0aW9uRm9yT2Zmc2V0KGNh
Y2hlZE9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
bG9hZFB0cihiYXNlLT5hZGRyZXNzT2ZPdXRPZkxpbmVTdG9yYWdlKCksIHJlc3VsdCk7CisgICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKGNhY2hlZE9m
ZnNldCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHJlc3VsdCk7CiB9CiAKLXZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCit2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpCiB7CiAgICAgSnVtcExpc3QgZmFpbHVyZUNhc2Vz
OwogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4K
QEAgLTUyMiw3ICs1NTIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNp
dGlvCiAjZW5kaWYKICAgICAKICAgICAvLyBlbWl0IGEgY2FsbCBvbmx5IGlmIHN0b3JhZ2UgcmVh
bGxvYyBpcyBuZWVkZWQKLSAgICBib29sIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MgPSBvbGRTdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIGJvb2wgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYyA9IG9s
ZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCk7CiAgICAgaWYgKHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MpIHsKICAgICAgICAg
Ly8gVGhpcyB0cmFtcG9saW5lIHdhcyBjYWxsZWQgdG8gbGlrZSBhIEpJVCBzdHViOyBiZWZvcmUg
d2UgY2FuIGNhbiBjYWxsIGFnYWluIHdlIG5lZWQgdG8KICAgICAgICAgLy8gcmVtb3ZlIHRoZSBy
ZXR1cm4gYWRkcmVzcyBmcm9tIHRoZSBzdGFjaywgdG8gcHJldmVudCB0aGUgc3RhY2sgZnJvbSBi
ZWNvbWluZyBtaXNhbGlnbmVkLgpAQCAtNTMyLDcgKzU2Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7
IC8vIGJhc2UKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAg
ICAgIHN0dWJDYWxsLnNraXBBcmd1bWVudCgpOyAvLyB2YWx1ZQotICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChUcnVzdGVkSW1tMzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2Fs
bChyZWdUMCk7CiAgICAgICAgIGVtaXRHZXRKSVRTdHViQXJnKDIsIHJlZ1QxKTsKQEAgLTU3Miw3
ICs2MDIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwogfQogCi12b2lk
IEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihjb2RlQmxvY2spOwogCkBAIC01ODAsMTQgKzYxMCwxMyBAQCB2b2lkIEpJVDo6cGF0Y2hH
ZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvCiAgICAgLy8gU2hvdWxkIHByb2JhYmx5IGdvIHRvIGN0
aV9vcF9nZXRfYnlfaWRfZmFpbCwgYnV0IHRoYXQgZG9lc24ndCBkbyBhbnl0aGluZyBpbnRlcmVz
dGluZyByaWdodCBub3cuCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9u
KHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7
CiAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0OwotCiAg
ICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxvYWQgZnJv
bSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBzdHJ1Y3R1
cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRh
dGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlz
cGxhY2VtZW50TGFiZWwpLCBvZmZzZXQpOworICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3Ry
dWN0aW9uSXNBY3RpdmUoc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5jb252ZXJ0aWJsZUxvYWRBdE9m
ZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHJvcGVydHlTdG9yYWdlTG9hZCks
IGlzT3V0T2ZMaW5lT2Zmc2V0KGNhY2hlZE9mZnNldCkpOworICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuZGlzcGxhY2VtZW50TGFiZWwpLCBvZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoY2FjaGVkT2Zmc2V0KSk7CiB9CiAKLXZvaWQgSklUOjpwYXRj
aFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQordm9pZCBKSVQ6OnBhdGNo
UHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNl
dCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRpcmVjdCkKIHsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIApAQCAtNTk1LDExICs2MjQs
MTAgQEAgdm9pZCBKSVQ6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKgogICAgIC8vIFNo
b3VsZCBwcm9iYWJseSBnbyB0byBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwsIGJ1dCB0aGF0IGRvZXNu
J3QgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcgcmlnaHQgbm93LgogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihkaXJlY3Qg
PyBjdGlfb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmljIDogY3RpX29wX3B1dF9ieV9pZF9nZW5l
cmljKSk7CiAKLSAgICBpbnQgb2Zmc2V0ID0gc2l6ZW9mKEpTVmFsdWUpICogY2FjaGVkT2Zmc2V0
OwotCiAgICAgLy8gUGF0Y2ggdGhlIG9mZnNldCBpbnRvIHRoZSBwcm9wb2VydHkgbWFwIHRvIGxv
YWQgZnJvbSwgdGhlbiBwYXRjaCB0aGUgU3RydWN0dXJlIHRvIGxvb2sgZm9yLgogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LnB1dC5zdHJ1Y3R1cmVUb0NvbXBhcmUpLCBz
dHJ1Y3R1cmUpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJl
Z2luLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LmRp
c3BsYWNlbWVudExhYmVsKSwgb2Zmc2V0KTsKKyAgICByZXBhdGNoQnVmZmVyLnNldExvYWRJbnN0
cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uY29udmVydGlibGVMb2FkQXRP
ZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUucHV0LnByb3BlcnR5U3RvcmFnZUxvYWQp
LCBpc091dE9mTGluZU9mZnNldChjYWNoZWRPZmZzZXQpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCksIG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShjYWNoZWRPZmZzZXQpKTsKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
CkBAIC02NDMsNyArNjcxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJh
eUxlbgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRy
ZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX2FycmF5X2ZhaWwpKTsKIH0KIAotdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXpl
X3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gVGhlIHBy
b3RvdHlwZSBvYmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhl
IENvZGVCbG9jayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZSB0aGF0IGlzCiAgICAgLy8gcmVm
ZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3QgLSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQg
aXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCkBAIC03MTAsNyArNzM4LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
Q2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5
X2lkX3Byb3RvX2xpc3QpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5kZXgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0KQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMsIGludCBjdXJyZW50SW5k
ZXgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpCiB7CiAgICAg
SnVtcCBmYWlsdXJlQ2FzZSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogICAg
IGJvb2wgbmVlZHNTdHViTGluayA9IGZhbHNlOwpAQCAtNzcwLDcgKzc5OCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICByZXBhdGNoQnVmZmVyLnJlbGlu
ayhqdW1wTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJDb2RlLmNvZGUoKSkpOwogfQog
Ci12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVT
dHJ1Y3R1cmVzLCBpbnQgY3VycmVudEluZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQordm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90
eXBlU3RydWN0dXJlcywgaW50IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIFRoZSBwcm90b3R5cGUgb2JqZWN0IGRlZmluaXRl
bHkgZXhpc3RzIChpZiB0aGlzIHN0dWIgZXhpc3RzIHRoZSBDb2RlQmxvY2sgaXMgcmVmZXJlbmNp
bmcgYSBTdHJ1Y3R1cmUgdGhhdCBpcwogICAgIC8vIHJlZmVyZW5jaW5nIHRoZSBwcm90b3R5cGUg
b2JqZWN0IC0gbGV0J3Mgc3BlY3VsYXRpdmVseSBsb2FkIGl0J3MgdGFibGUgbmljZSBhbmQgZWFy
bHkhKQpAQCAtODM5LDcgKzg2Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90b0xpc3QKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhqdW1wTG9jYXRpb24sIENvZGVMb2Nh
dGlvbkxhYmVsKHN0dWJDb2RlLmNvZGUoKSkpOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVzLCBpbnQgY3VycmVudElu
ZGV4LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzaXplX3Qg
Y291bnQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlcywgaW50
IGN1cnJlbnRJbmRleCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFp
biwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIEFTU0VSVChjb3VudCk7CiAgICAgSnVtcExpc3QgYnVja2V0c09mRmFpbDsK
QEAgLTkxNCw3ICs5NDIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5M
aXN0CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoanVtcExvY2F0aW9uLCBDb2RlTG9jYXRpb25M
YWJlbChzdHViUm91dGluZS5jb2RlKCkpKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgc2l6
ZV90IGNvdW50LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvdW50KTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEyMTg2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NTQsNyArOTU0LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlD
YWNoZUdldAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IG9mZnNldCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKICAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihj
YWxsRnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCk7CiAgICAgaWYgKCFjb3VudCkgewogICAgICAgICBzdHViSW5mby0+YWNjZXNzVHlwZSA9IGFj
Y2Vzc19nZXRfYnlfaWRfZ2VuZXJpYzsKQEAgLTE0ODYsMTMgKzE0ODYsMTYgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXRfYgogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
c3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBpbnQzMl90IG9sZFNpemUgPSBzdGFj
a0ZyYW1lLmFyZ3NbM10uaW50MzIoKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHN0
YWNrRnJhbWUuYXJnc1s0XS5zdHJ1Y3R1cmUoKTsKLSAgICBpbnQzMl90IG5ld1NpemUgPSBuZXdT
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaW50MzJfdCBuZXdTaXpl
ID0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIAorICAgIEFTU0VSVChv
bGRTaXplID49IDApOworICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6ZSk7CiAKICAgICBBU1NF
UlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc3RhY2tGcmFtZS5n
bG9iYWxEYXRhOwotICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gYmFzZS0+Z3Jvd1By
b3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBvbGRTaXplLCBuZXdTaXplKTsKLSAgICBiYXNlLT5z
ZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsK
KyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IGJhc2UtPmdyb3dPdXRPZkxpbmVTdG9y
YWdlKGdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOworICAgIGJhc2UtPnNldE91dE9mTGlu
ZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKIAogICAgIHJl
dHVybiBiYXNlOwogfQpAQCAtMTgxNCw3ICsxODE3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
RW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkuaXNPYmplY3Qo
KSk7CiAgICAgSlNPYmplY3QqIHNsb3RCYXNlT2JqZWN0ID0gYXNPYmplY3Qoc2xvdC5zbG90QmFz
ZSgpKTsKICAgICAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogCiAgICAgaWYg
KHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpCiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhjb2RlQmxvY2ssIFNUVUJfUkVUVVJOX0FERFJFU1MsIEZ1bmN0aW9uUHRyKGN0
aV9vcF9nZXRfYnlfaWRfcHJvdG9fZmFpbCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OTUsNyArODk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWQKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJv
cGVydHlDYWNoaW5nKCkpIHsKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAg
ICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkgeworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0X2J5X2lkKTsKKyAgICAgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdl
KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsK
KyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk0MCw3ICs5NDYsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90
LmJhc2UoKSkgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYg
c3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxp
ZGF0ZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbApAQCAtOTUy
LDcgKzk1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmpl
Y3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcGNbNV0u
dS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJv
dG90eXBlQ2hhaW4oZXhlYyk7CkBAIC05NjAsMTYgKzk2OSwyOCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3Ry
dWN0dXJlQ2hhaW4uc2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAg
ICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9v
Zl9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAg
ICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRh
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAg
ICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0
KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0u
dS5vcGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtOTE5LDYgKzkx
OSwyNCBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGRpc3BhdGNoKDMpCiAKIAorbWFjcm8g
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldEtub3duTm90RmluYWwocHJvcGVydHlPZmZzZXQs
IG9iamVjdEFuZFN0b3JhZ2UsIHRhZywgcGF5bG9hZCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBi
aWd0ZXEgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0eSwgb2sgZW5kKQorICAg
IGxvYWRwIEpTT2JqZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9i
amVjdEFuZFN0b3JhZ2UKKyAgICBsb2FkaSBUYWdPZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNh
cGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldCAtIDggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3Rv
cmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXlsb2FkCitlbmQKKworbWFjcm8gbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldChwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFn
LCBwYXlsb2FkKQorICAgIGJpbHQgcHJvcGVydHlPZmZzZXQsIElubGluZVN0b3JhZ2VDYXBhY2l0
eSwgLmlzSW5saW5lCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmpl
Y3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGptcCAucmVhZHkKKy5pc0lubGlu
ZToKKyAgICBhZGRwIEpTRmluYWxPYmplY3Q6Om1faW5saW5lU3RvcmFnZSArIElubGluZVN0b3Jh
Z2VDYXBhY2l0eSAqIDgsIG9iamVjdEFuZFN0b3JhZ2UKKy5yZWFkeToKKyAgICBsb2FkaSBUYWdP
ZmZzZXQgLSA4ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3Bl
cnR5T2Zmc2V0LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAtIDggKiBJbmxpbmVT
dG9yYWdlQ2FwYWNpdHlbb2JqZWN0QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCBwYXls
b2FkCitlbmQKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KQEAgLTkzMCw5ICs5NDgsNyBAQCBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCiAg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCiAgICAgYnBuZXEgdDEsIDEyW1BD
XSwgc2xvdwogICAgIGxvYWRpIDE2W1BDXSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MAotICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0Mgot
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0S25vd25Ob3RGaW5hbCh0MSwgdDAsIHQyLCB0MykKICAgICBsb2FkaSA0
W1BDXSwgdDAKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpAQCAtMTA4NywzMSArMTEwMyw0NCBAQCBf
bGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgZGlzcGF0Y2goNSkKIAogCi1fbGxp
bnRfb3BfZ2V0X2J5X2lkOgorIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNo
aW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQorIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRo
ZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3
IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorIyB3ZSB3
b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorCittYWNybyBnZXRCeUlkKGdldFByb3BlcnR5
U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBXZSBvbmx5IGRvIG1vbm9tb3Jw
aGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQot
ICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFu
Z2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKLSAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBB
dCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCi0gICAg
IyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNs
b3cgcGF0aCwgd2hpY2ggaXMgd2hhdAotICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFu
eXdheS4KICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkaSAxNltQQ10sIHQxCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xv
dykKICAgICBsb2FkaSAyMFtQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QzXSwgdDAKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93Ci0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgbG9hZGkgVGFnT2Zmc2V0W3Qw
LCB0Ml0sIHQzCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgotICAgIHN0b3Jl
aSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgMzJbUENdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0Mywg
dDIsIHQxKQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAorICAgICAg
ICB0MywKKyAgICAgICAgdDAsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0
Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdl
dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICAgICAgICAgIGxvYWRp
IFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAorICAgICAgICAgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKKyAgICAgICAgICAgIHN0
b3JlaSBzY3JhdGNoLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICAgICAgbG9hZGkgMzJbUENdLCB0
MQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gsIHQyLCB0MSkKKyAgICAgICAgICAg
IGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkKKworICAgIC5vcEdldEJ5SWRTbG93OgorICAgICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgICAgIGRpc3Bh
dGNoKDkpCitlbmQKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICBnZXRCeUlkKHdpdGhJbmxp
bmVTdG9yYWdlKQogCi0ub3BHZXRCeUlkU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9nZXRfYnlfaWQpCi0gICAgZGlzcGF0Y2goOSkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9vdXRfb2ZfbGluZToKKyAgICBnZXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQogCiAKIF9s
bGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKQEAgLTExMzAsNjggKzExNTksOTYgQEAgX2xs
aW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50
X29wX3B1dF9ieV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSAxNltQQ10sIHQx
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQ
dXRCeUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCi0gICAgd3JpdGVCYXJyaWVyKHQwLCB0MikK
LSAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCi0gICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3QzLCB0MV0KLSAgICBkaXNwYXRjaCg5KQorICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
KyAgICAgICAgdDAsCisgICAgICAgIHQzLAorICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
LCAub3BQdXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQorICAgICAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQorICAgICAgICAg
ICAgd3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gs
IFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5
KQorICAgICAgICBlbmQpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBwdXRCeUlk
KHdpdGhJbmxpbmVTdG9yYWdlKQogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAogCi1tYWNybyBw
dXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorX2xsaW50X29wX3B1dF9ieV9pZF9v
dXRfb2ZfbGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCisKK21hY3Jv
IHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdldFByb3BlcnR5U3RvcmFnZSkK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgMTZb
UENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0
MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgogICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hl
Y2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMp
CiAgICAgbG9hZGkgMjBbUENdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0MF0sIHQzCi0gICAgYWRkcCB0MSwgdDMKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MiwgdDEsIHQyKQotICAgIHdyaXRlQmFycmllcih0MSwgdDIpCi0gICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbdDNdCi0gICAgbG9hZGkgMjRbUENdLCB0MQotICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFt0M10KLSAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCi0g
ICAgZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAg
ICAgICB0MywKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAg
ICAgICAgIGFkZHAgdDEsIHByb3BlcnR5U3RvcmFnZSwgdDMKKyAgICAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIo
dDEsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgICAgICAg
ICBsb2FkaSAyNFtQQ10sIHQxCisgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAg
ICAgICAgICBkaXNwYXRjaCg5KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gbm9BZGRpdGlv
bmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK2VuZAorCittYWNybyBzdHJ1Y3R1cmVD
aGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRo
ZSBwcm90bworCisgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgYXNzZXJ0KG1hY3JvIChv
aykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3Zl
Y3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0
Y2gsIG9rIGVuZCkKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRb
b2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKy5sb29wOgorICAgIGxvYWRpIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisg
ICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CisgICAgYWRk
cCA0LCBzY3JhdGNoCisgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAorLmRvbmU6CiBlbmQKIAogX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKLSAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNy
byAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisgICAgcHV0QnlJZFRyYW5zaXRp
b24obm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFu
c2l0aW9uKG5vQWRkaXRpb25hbENoZWNrcywgd2l0aE91dE9mTGluZVN0b3JhZ2UpCiAKIAogX2xs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKLSAgICBwdXRCeUlkVHJhbnNpdGlv
bigKLSAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKLSAgICAgICAg
ICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3Ry
dWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KLSAgICAgICAgCi0gICAgICAgICAgICBsb2Fk
cCAyOFtQQ10sIHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNj
cmF0Y2gsIG9rIGVuZCkKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rv
cltzY3JhdGNoXSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnog
c2NyYXRjaCwgb2sgZW5kKQotICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
ICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCi0gICAgICAgIC5sb29w
OgotICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQotICAgICAgICAgICAgYnBuZXEgb2xk
U3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKLSAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAot
ICAgICAgICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAotICAgICAgICAuZG9uZToKLSAgICAgICAgZW5kKQor
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoSW5saW5lU3Rv
cmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9s
aW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3aXRoT3V0
T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKQEAgLTEyNjEsOSArMTMx
OCw4IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0
MAogICAgIHN1YmkgMSwgdDAKICAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDIs
IHQwLCA4XSwgdDEKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAg
YWRkaSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX29mZnNldEJhc2VbdDNdLCB0MAorICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZGkgNFtQ
Q10sIHQwCiAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAx
MjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNzc4LDYgKzc3OCwyMiBAQCBfbGxpbnRfb3BfaXNf
c3RyaW5nOgogICAgIGRpc3BhdGNoKDMpCiAKIAorbWFjcm8gbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldEtub3duTm90RmluYWwocHJvcGVydHlPZmZzZXQsIG9iamVjdEFuZFN0b3JhZ2UsIHZh
bHVlKQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSBwcm9wZXJ0eU9mZnNldCwgSW5saW5l
U3RvcmFnZUNhcGFjaXR5LCBvayBlbmQpCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5l
U3RvcmFnZVtvYmplY3RBbmRTdG9yYWdlXSwgb2JqZWN0QW5kU3RvcmFnZQorICAgIGxvYWRwIC04
ICogSW5saW5lU3RvcmFnZUNhcGFjaXR5W29iamVjdEFuZFN0b3JhZ2UsIHByb3BlcnR5T2Zmc2V0
LCA4XSwgdmFsdWUKK2VuZAorCittYWNybyBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHBy
b3BlcnR5T2Zmc2V0LCBvYmplY3RBbmRTdG9yYWdlLCB2YWx1ZSkKKyAgICBiaWx0IHByb3BlcnR5
T2Zmc2V0LCBJbmxpbmVTdG9yYWdlQ2FwYWNpdHksIC5pc0lubGluZQorICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX291dE9mTGluZVN0b3JhZ2Vbb2JqZWN0QW5kU3RvcmFnZV0sIG9iamVjdEFuZFN0b3Jh
Z2UKKyAgICBqbXAgLnJlYWR5CisuaXNJbmxpbmU6CisgICAgYWRkcCBKU0ZpbmFsT2JqZWN0Ojpt
X2lubGluZVN0b3JhZ2UgKyBJbmxpbmVTdG9yYWdlQ2FwYWNpdHkgKiA4LCBvYmplY3RBbmRTdG9y
YWdlCisucmVhZHk6CisgICAgbG9hZHAgLTggKiBJbmxpbmVTdG9yYWdlQ2FwYWNpdHlbb2JqZWN0
QW5kU3RvcmFnZSwgcHJvcGVydHlPZmZzZXQsIDhdLCB2YWx1ZQorZW5kCisKIG1hY3JvIHJlc29s
dmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAg
ICMgOFtQQiwgUEMsIDhdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpAQCAtNzg5LDggKzgw
NSw3IEBAIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKICAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKICAgICBicG5lcSB0MSwgMjRbUEIsIFBDLCA4XSwgc2xvdwog
ICAgIGxvYWRpcyAzMltQQiwgUEMsIDhdLCB0MQotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVt0MF0sIHQwCi0gICAgbG9hZHAgW3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQogICAgIGxvYWRpcyA4W1BCLCBQQywg
OF0sIHQwCiAgICAgc3RvcmVwIHQyLCBbY2ZyLCB0MCwgOF0KICAgICBsb2FkcCAoc2l6ZSAtIDEp
ICogOFtQQiwgUEMsIDhdLCB0MApAQCAtOTM3LDcgKzk1Miw3IEBAIF9sbGludF9vcF9wdXRfZ2xv
YmFsX3Zhcl9jaGVjazoKICAgICBkaXNwYXRjaCg1KQogCiAKLV9sbGludF9vcF9nZXRfYnlfaWQ6
CittYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3cs
IGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQogICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwg
YWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKQEAg
LTk0OCwxOCArOTYzLDMwIEBAIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgbG9hZHAgMzJbUEIs
IFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdl
dEJ5SWRTbG93KQogICAgIGxvYWRpcyA0MFtQQiwgUEMsIDhdLCB0MgotICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQx
Ci0gICAgbG9hZHAgW3QwLCB0Ml0sIHQzCi0gICAgc3RvcmVwIHQzLCBbY2ZyLCB0MSwgOF0KLSAg
ICBsb2FkcCA2NFtQQiwgUEMsIDhdLCB0MQotICAgIHZhbHVlUHJvZmlsZSh0MywgdDEpCi0gICAg
ZGlzcGF0Y2goOSkKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQzLAorICAgICAg
ICB0MCwKKyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAg
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAg
ICAgICAgICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCisgICAgICAgICAgICBsb2FkcCBbcHJv
cGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKKyAgICAgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBb
Y2ZyLCB0MSwgOF0KKyAgICAgICAgICAgIGxvYWRwIDY0W1BCLCBQQywgOF0sIHQxCisgICAgICAg
ICAgICB2YWx1ZVByb2ZpbGUoc2NyYXRjaCwgdDEpCisgICAgICAgICAgICBkaXNwYXRjaCg5KQor
ICAgICAgICBlbmQpCisgICAgICAgICAgICAKKyAgICAub3BHZXRCeUlkU2xvdzoKKyAgICAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgICAgICBkaXNwYXRj
aCg5KQorZW5kCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgZ2V0QnlJZCh3aXRoSW5saW5l
U3RvcmFnZSkKIAotLm9wR2V0QnlJZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X2lkKQotICAgIGRpc3BhdGNoKDkpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
b3V0X29mX2xpbmU6CisgICAgZ2V0QnlJZCh3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxp
bnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CkBAIC05NzgsNjUgKzEwMDUsOTMgQEAgX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29w
X3B1dF9ieV9pZDoKK21hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIDMyW1BC
LCBQQywgOF0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQ
dXRCeUlkU2xvdykKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDIKLSAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwg
dDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKLSAgICB3cml0ZUJhcnJpZXIo
dDApCi0gICAgc3RvcmVwIHQwLCBbdDMsIHQxXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJv
cGVydHlTdG9yYWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChw
cm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaXMgNDBbUEIs
IFBDLCA4XSwgdDEKKyAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHNjcmF0
Y2gpCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDApCisgICAgICAgICAgICBzdG9yZXAgc2Ny
YXRjaCwgW3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAg
ICAgICBlbmQpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICBwdXRCeUlkKHdpdGhJ
bmxpbmVTdG9yYWdlKQogCiAub3BQdXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgZGlzcGF0Y2goOSkKIAogCi1tYWNybyBwdXRCeUlk
VHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorX2xsaW50X29wX3B1dF9ieV9pZF9vdXRfb2Zf
bGluZToKKyAgICBwdXRCeUlkKHdpdGhPdXRPZkxpbmVTdG9yYWdlKQorCisKK21hY3JvIHB1dEJ5
SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MsIGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCAz
MltQQiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwg
Lm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGlzIDI0W1BCLCBQQywgOF0sIHQyCiAgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9u
YWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQx
LCB0MykKICAgICBsb2FkaXMgNDBbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MwotICAgIGFkZHAgdDEsIHQzCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDEpCi0gICAgd3JpdGVCYXJyaWVyKHQxKQotICAgIHN0b3JlcCB0
MSwgW3QzXQotICAgIGxvYWRwIDQ4W1BCLCBQQywgOF0sIHQxCi0gICAgc3RvcmVwIHQxLCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXQotICAgIGRpc3BhdGNoKDkpCisgICAgZ2V0UHJvcGVydHlTdG9y
YWdlKAorICAgICAgICB0MCwKKyAgICAgICAgdDMsCisgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0
b3JhZ2UsIHNjcmF0Y2gpCisgICAgICAgICAgICBhZGRwIHQxLCBwcm9wZXJ0eVN0b3JhZ2UsIHQz
CisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKKyAgICAgICAgICAg
IHdyaXRlQmFycmllcih0MSkKKyAgICAgICAgICAgIHN0b3JlcCB0MSwgW3QzXQorICAgICAgICAg
ICAgbG9hZHAgNDhbUEIsIFBDLCA4XSwgdDEKKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIGRpc3BhdGNoKDkpCisgICAgICAgIGVuZCkK
K2VuZAorCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoKQor
ZW5kCisKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkK
KyAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAgIyBSZXVzaW5nIHRoZSBvbGRT
dHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgIGxvYWRwIDU2W1BCLCBQQywgOF0s
IHNjcmF0Y2gKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisg
ICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgIGJwZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5kb25lCisubG9vcDoK
KyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIHByb3RvQ2Vs
bAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJl
CisgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CisgICAg
YWRkcCA4LCBzY3JhdGNoCisgICAgYnBuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1
Y3R1cmVdLCBWYWx1ZU51bGwsIC5sb29wCisuZG9uZToKIGVuZAogCiBfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihub0Fk
ZGl0aW9uYWxDaGVja3MsIHdpdGhJbmxpbmVTdG9yYWdlKQorCisKK19sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgcHV0QnlJZFRyYW5zaXRpb24o
bm9BZGRpdGlvbmFsQ2hlY2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgotICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAotICAg
ICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQotICAgICAgICAgICAgY29u
c3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KLSAgICAgICAgICAgIGxvYWRwIDU2W1BCLCBQQywgOF0s
IHNjcmF0Y2gKLSAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9r
IGVuZCkKLSAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNo
XSwgc2NyYXRjaAotICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwg
b2sgZW5kKQotICAgICAgICAgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVj
dHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKLSAgICAgICAgLmxvb3A6Ci0gICAgICAgICAgICBsb2Fk
cCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAotICAgICAg
ICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUK
LSAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Ci0gICAgICAg
ICAgICBhZGRwIDgsIHNjcmF0Y2gKLSAgICAgICAgICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAubG9vcAotICAgICAgICAuZG9uZToKLSAg
ICAgICAgZW5kKQorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hlY2tzLCB3
aXRoSW5saW5lU3RvcmFnZSkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsX291dF9vZl9saW5lOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZUNoYWluQ2hl
Y2tzLCB3aXRoT3V0T2ZMaW5lU3RvcmFnZSkKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKQEAg
LTExMDYsOCArMTE2MSw4IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKICAgICBzdWJpIDEsIHQzCiAgICAgYmlhZXEgdDMs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDFdLCAub3BHZXRC
eVBuYW1lU2xvdwotICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQw
Ci0gICAgbG9hZHAgW3QwLCB0MywgOF0sIHQwCisgICAgYWRkaSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX29mZnNldEJhc2VbdDFdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDMsIHQwLCB0MCkKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQogICAgIHN0b3JlcCB0
MCwgW2NmciwgdDEsIDhdCiAgICAgZGlzcGF0Y2goNykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDEy
MTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTMgQEAgY29uc3QgTExJbnRSZXR1cm5Q
QyA9IEFyZ3VtZW50Q291bnQgKyBUYQogIyBTdHJpbmcgZmxhZ3MuCiBjb25zdCBIYXNoRmxhZ3M4
Qml0QnVmZmVyID0gNjQKIAorIyBQcm9wZXJ0eSBzdG9yYWdlIGNvbnN0YW50cworaWYgSlNWQUxV
RTY0CisgICAgY29uc3QgSW5saW5lU3RvcmFnZUNhcGFjaXR5ID0gNAorZWxzZQorICAgIGNvbnN0
IElubGluZVN0b3JhZ2VDYXBhY2l0eSA9IDYKK2VuZAorCiAjIEFsbG9jYXRpb24gY29uc3RhbnRz
CiBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAx
CkBAIC0zMTIsOCArMzE5LDcgQEAgbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFz
c0luZAogICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCBz
dHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQogICAgICAgICBzdG9yZXAgMCwg
SlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQotICAgICAgICBhZGRwIHNpemVvZiBKU09i
amVjdCwgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6
bV9vdXRPZkxpbmVTdG9yYWdlW3Jlc3VsdF0KICAgICBlbmQKIGVuZAogCkBAIC00ODEsNiArNDg3
LDIxIEBAIF9sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKICAgICBkaXNwYXRjaCg1KQogCiAK
K21hY3JvIHdpdGhJbmxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250aW51
YXRpb24pCisgICAgIyBJbmRpY2F0ZSB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIHByb3BlcnR5IHN0
b3JhZ2UsIGFuZCB0aGF0IHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSByZWdpc3RlciBpcyB1
bnVzZWQuCisgICAgY29udGludWF0aW9uKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlKQorZW5kCisK
K21hY3JvIHdpdGhPdXRPZkxpbmVTdG9yYWdlKG9iamVjdCwgcHJvcGVydHlTdG9yYWdlLCBjb250
aW51YXRpb24pCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fb3V0T2ZMaW5lU3RvcmFnZVtvYmplY3Rd
LCBwcm9wZXJ0eVN0b3JhZ2UKKyAgICAjIEluZGljYXRlIHRoYXQgdGhlIHByb3BlcnR5U3RvcmFn
ZSByZWdpc3RlciBub3cgcG9pbnRzIHRvIHRoZQorICAgICMgcHJvcGVydHkgc3RvcmFnZSwgYW5k
IHRoYXQgdGhlIG9iamVjdCByZWdpc3RlciBtYXkgYmUgcmV1c2VkCisgICAgIyBpZiB0aGUgb2Jq
ZWN0IHBvaW50ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorICAgIGNvbnRpbnVhdGlvbihwcm9w
ZXJ0eVN0b3JhZ2UsIG9iamVjdCkKK2VuZAorCisKIF9sbGludF9vcF9kZWxfYnlfaWQ6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2RlbF9i
eV9pZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgko
d29ya2luZyBjb3B5KQpAQCAtNTU1LDcgKzU1NSwxMSBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAg
IGVuZAogICAgIAogICAgIGRlZiBoYW5kbGVYODZBZGQoa2luZCkKLSAgICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAg
ICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAiYWRkI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sx
XS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0u
aXNfYT8gUmVnaXN0ZXJJRAogICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMApA
QCAtNTY4LDcgKzU3MiwxMSBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICBlbHNpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKICAgICAgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAg
ICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAotICAgICAgICAgICAg
JGFzbS5wdXRzICJsZWEje3g4NlN1ZmZpeChraW5kKX0gKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0pLCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibGVh
I3t4ODZTdWZmaXgoa2luZCl9ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgICAgICAgIGVuZAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1bmxlc3Mg
SW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCiAgICAgICAgICAgICAgICAgJGFz
bS5wdXRzICJhZGQje3g4NlN1ZmZpeChraW5kKX0gI3t4ODZPcGVyYW5kcyhraW5kLCBraW5kKX0i
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVj
dHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmU7Ci0gICAgICAgIHNpemVfdCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKQEAgLTI2Miw3ICsy
NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAg
ICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9i
b3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogbmFtZWRG
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQotICAgICAgICBzaXplX3QgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZnVu
Y3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0K
ICAgICAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIHBy
aXZhdGVOYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZVN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9u
IDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTMsMjQgKzkzLDU0IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWwKICAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9s
YXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwogICAg
IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKICNl
bmRpZgorICAgIAorICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKworICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gdGhpc09iamVjdC0+b3V0T2ZMaW5l
U3RvcmFnZSgpOworICAgIGlmIChzdG9yYWdlKSB7CisgICAgICAgIHNpemVfdCBzdG9yYWdlU2l6
ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplRm9yS25vd25Ob25GaW5h
bE9iamVjdCgpOworICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNs
YWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0
eXBlLXB1bm5lZCBwb2ludGVycy4KKyAgICAgICAgdm9pZCogdGVtcCA9IHN0b3JhZ2U7CisgICAg
ICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiks
IHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOworICAgICAgICBzdG9yYWdlID0gc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9vdXRP
ZkxpbmVTdG9yYWdlLnNldChzdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKTsKKyAg
ICB9CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9pbmhlcml0b3JJRCkKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5oZXJpdG9ySUQpOwogCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB3
YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOworI2VuZGlmCit9CisKK3ZvaWQgSlNG
aW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTRmluYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbE9i
amVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JE
ZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb247CisgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
biA9IGZhbHNlOworI2VuZGlmCisgICAgCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwogCi0gICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSB0aGlzT2Jq
ZWN0LT5wcm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7Ci0gICAgZWxzZSB7CisgICAgUHJvcGVydHlTdG9yYWdl
IHN0b3JhZ2UgPSB0aGlzT2JqZWN0LT5vdXRPZkxpbmVTdG9yYWdlKCk7CisgICAgaWYgKHN0b3Jh
Z2UpIHsKKyAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJl
KCktPm91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCk7CiAgICAgICAgIC8vIFdlIGhh
dmUgdGhpcyBleHRyYSB0ZW1wIGhlcmUgdG8gc2xha2UgR0NDJ3MgdGhpcnN0IGZvciB0aGUgYmxv
b2Qgb2YgdGhvc2Ugd2hvIGRlcmVmZXJlbmNlIHR5cGUtcHVubmVkIHBvaW50ZXJzLgogICAgICAg
ICB2b2lkKiB0ZW1wID0gc3RvcmFnZTsKLSAgICAgICAgdmlzaXRvci5jb3B5QW5kQXBwZW5kKCZ0
ZW1wLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSwgc3RvcmFnZS0+c2xvdCgpLCBzdG9y
YWdlU2l6ZSk7CisgICAgICAgIHZpc2l0b3IuY29weUFuZEFwcGVuZCgmdGVtcCwgdGhpc09iamVj
dC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiksIHN0b3JhZ2UtPnNsb3QoKSwgc3RvcmFnZVNpemUpOwogICAgICAgICBz
dG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPih0ZW1wKTsKLSAgICAgICAgdGhp
c09iamVjdC0+bV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KHN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpV
bmNoZWNrZWQpOworICAgICAgICB0aGlzT2JqZWN0LT5tX291dE9mTGluZVN0b3JhZ2Uuc2V0KHN0
b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpVbmNoZWNrZWQpOwogICAgIH0KIAogICAgIGlmICh0aGlz
T2JqZWN0LT5tX2luaGVyaXRvcklEKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9pbmhlcml0b3JJRCk7CiAKKyAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aW5saW5lU2l6ZUZvcktub3duRmluYWxPYmplY3QoKTsKKyAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5pbmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXpl
KTsKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsK
ICNlbmRpZgpAQCAtMTUzLDggKzE4Myw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGEKICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9
IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAg
ICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gb2Jq
LT5zdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgewor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAg
ICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmli
dXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpAQCAtMjcyLDcg
KzMwMiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2UKIAogICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIGlm
ICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSB7Cisg
ICAgaWYgKGlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVjLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7
CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udERlbGV0ZSAmJiAhZXhlYy0+Z2xvYmFsRGF0
YSgpLmlzSW5EZWZpbmVPd25Qcm9wZXJ0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB0aGlzT2JqZWN0LT5yZW1vdmVEaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUpOwpAQCAtMzk0LDcgKzQyNCw3IEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNF
bnVtZXJhYmxlKEV4ZWMKIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNp
ZmljVmFsdWUpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBpZiAoc3Ry
dWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAoaXNWYWxpZE9mZnNl
dChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
VGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3RhdGljIHRhYmxlPyAtIHNob3Vs
ZCBwcm9iYWJseQpAQCAtNTE2LDIwICs1NDYsMjAgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0
aWNGdW5jdGlvbnNGb3JEZQogCiBib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIGlmIChz
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3Vu
ZCkKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2l6ZV90IG9mZnNl
dDsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5y
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNl
dCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBw
dXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwg
b2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChvZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTksMjUg
KzU4OSwyMiBAQCBTdHJ1Y3R1cmUqIEpTT2JqZWN0OjpjcmVhdGVJbmhlcml0b3JJRChKCiAgICAg
cmV0dXJuIG1faW5oZXJpdG9ySUQuZ2V0KCk7CiB9CiAKLVByb3BlcnR5U3RvcmFnZSBKU09iamVj
dDo6Z3Jvd1Byb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKK1Byb3BlcnR5U3RvcmFnZSBKU09iamVjdDo6Z3Jvd091
dE9mTGluZVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKIAogICAg
IC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBmdW5jdGlvbiBub3QgcmVseSBvbiBzdHJ1Y3R1
cmUoKSwgc2luY2UKICAgICAvLyB3ZSBtaWdodCBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJhbnNp
dGlvbi4KIAotICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3Bl
cnR5U3RvcmFnZS5nZXQoKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdl
ID0gbV9vdXRPZkxpbmVTdG9yYWdlLmdldCgpOwogICAgIFByb3BlcnR5U3RvcmFnZSBuZXdQcm9w
ZXJ0eVN0b3JhZ2UgPSAwOwogCi0gICAgaWYgKGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpIHsKKyAg
ICBpZiAoIW9sZFByb3BlcnR5U3RvcmFnZSkgewogICAgICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0
cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJzdCBmb3IgdGhlIGJsb29kIG9mIHRob3Nl
IHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2ludGVycy4KICAgICAgICAgdm9pZCogdGVt
cCA9IG5ld1Byb3BlcnR5U3RvcmFnZTsKICAgICAgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAudHJ5
QWxsb2NhdGVTdG9yYWdlKHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSAqIG5ld1Np
emUsICZ0ZW1wKSkKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIG5ld1Byb3BlcnR5U3Rv
cmFnZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5U3RvcmFnZT4odGVtcCk7Ci0KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG9sZFNpemU7ICsraSkKLSAgICAgICAgICAgIG5ld1Byb3Bl
cnR5U3RvcmFnZVtpXSA9IG9sZFByb3BlcnR5U3RvcmFnZVtpXTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBXZSBoYXZlIHRoaXMgZXh0cmEgdGVtcCBoZXJlIHRvIHNsYWtlIEdDQydzIHRoaXJz
dCBmb3IgdGhlIGJsb29kIG9mIHRob3NlIHdobyBkZXJlZmVyZW5jZSB0eXBlLXB1bm5lZCBwb2lu
dGVycy4KICAgICAgICAgdm9pZCogdGVtcCA9IG9sZFByb3BlcnR5U3RvcmFnZTsKQEAgLTU5NCw4
ICs2MjEsOCBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCiB7CiAg
ICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CiAgICAgSlNDZWxsKiBjZWxsID0gMDsKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsKLSAgICBpZiAob2Zmc2V0ID09IFdU
Rjo6bm90Rm91bmQpCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBj
ZWxsKTsKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Iob2JqZWN0LT5nZXREaXJlY3RPZmZz
ZXQob2Zmc2V0KSwgYXR0cmlidXRlcyk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDE4ICs3OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQWNjZXNzb3IgICAgID0g
MSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgfTsKIAotI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFj
aXR5IDYKLSNlbHNlCi0jZGVmaW5lIEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5
IDQKLSNlbmRpZgotCi1DT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdl
Q2FwYWNpdHkgPj0gMCksIGZpbmFsX3N0b3JhZ2Vfbm9uX25lZ2F0aXZlKTsKKyAgICBjbGFzcyBK
U0ZpbmFsT2JqZWN0OwogCiAgICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOworICAgICAgICBm
cmllbmQgY2xhc3MgSlNGaW5hbE9iamVjdDsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJs
b2NrOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKQEAgLTE2OSwyNiArMTY0LDcyIEBAIENPTVBJTEVf
QVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgLy8gVGhpcyBnZXQgZnVu
Y3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgICAgICBKU1ZhbHVlIGdl
dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zmc2V0KSA6IEpTVmFs
dWUoKTsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGNoZWNrT2Zmc2V0KG9m
ZnNldCwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNW
YWx1ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
Z2V0RGlyZWN0TG9jYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3Ry
dWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgcmV0
dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6
IDA7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBjaGVja09mZnNldChvZmZz
ZXQsIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsK
ICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVj
dExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTQ2Vs
bCogc3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBs
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0g
aW52YWxpZE9mZnNldCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9
CiAKLSAgICAgICAgc2l6ZV90IG9mZnNldEZvckxvY2F0aW9uKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uKSBjb25zdAorICAgICAgICBib29sIGhhc0lubGluZVN0b3JhZ2UoKSBj
b25zdCB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzSW5saW5lU3RvcmFnZSgpOyB9CisgICAgICAg
IENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2VVbnNhZmUoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvbnN0UHJvcGVydHlTdG9yYWdl
Pih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0
b3JhZ2VVbnNhZmUoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gLSBw
cm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHJvcGVy
dHlTdG9yYWdlPih0aGlzICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0
b3JhZ2UgaW5saW5lU3RvcmFnZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChoYXNJbmxpbmVTdG9yYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VV
bnNhZmUoKTsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNJbmxpbmVTdG9yYWdlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgQ29uc3RQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5nZXQoKTsgfQorICAgICAgICBQcm9wZXJ0
eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fb3V0T2ZMaW5lU3RvcmFnZS5n
ZXQoKTsgfQorCisgICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0
aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOworICAg
ICAgICAgICAgcmV0dXJuICZvdXRPZkxpbmVTdG9yYWdlKClbb2Zmc2V0SW5PdXRPZkxpbmVTdG9y
YWdlKG9mZnNldCldOworICAgICAgICB9CisKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KV07
CisgICAgICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uob2Zmc2V0KV07CisgICAgICAgIH0KKworICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVzdWx0OworICAgICAg
ICAgICAgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZSA9IGxvY2F0aW9uIC0gaW5saW5lU3Rv
cmFnZVVuc2FmZSgpOworICAgICAgICAgICAgaWYgKG9mZnNldEluSW5saW5lU3RvcmFnZSA8IHN0
YXRpY19jYXN0PHNpemVfdD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBvZmZzZXRJbklubGluZVN0b3JhZ2U7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRpb24gLSBvdXRPZkxpbmVTdG9yYWdlKCkgKyBmaXJz
dE91dE9mTGluZU9mZnNldDsKKyAgICAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KHJlc3VsdCwgc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqKTsKQEAgLTIwNSw5ICsyNDYsOSBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9i
amVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGJvb2wgcHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAg
ICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KLSAgICAgICAgSlNW
YWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gcHJvcGVy
dHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNl
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUp
IHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUp
OyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9CisgICAgICAg
IEpTVmFsdWUgZ2V0RGlyZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QgeyBy
ZXR1cm4gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Z2V0KCk7IH0KKyAgICAgICAgdm9pZCBw
dXREaXJlY3RPZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGds
b2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQorICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGly
ZWN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApAQCAtMjI4LDI0
ICsyNjksMTYgQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAg
ICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+
c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAgICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5j
dGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd1Byb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBz
aXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwotICAgICAgICBib29sIGlzVXNpbmdJbmxp
bmVTdG9yYWdlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCByZXN1bHQgPQot
ICAgICAgICAgICAgICAgICFtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKQotICAgICAgICAgICAgICAg
IHx8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkgPT0g
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsKLSAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQgPT0gc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpOwotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHNldFByb3BlcnR5U3Rv
cmFnZShKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eVN0b3JhZ2UsIFN0cnVjdHVyZSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eVN0b3JhZ2UgZ3Jvd091dE9mTGluZVN0b3JhZ2Uo
SlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKKyAgICAgICAg
dm9pZCBzZXRPdXRPZkxpbmVTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSwg
U3RydWN0dXJlKik7CiAgICAgICAgIAogICAgICAgICBib29sIHJlYWxsb2NhdGVTdG9yYWdlSWZO
ZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSop
OwogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nh
cnkoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgb2xkQ2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAg
ICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCogYWRkcmVzc09mUHJvcGVy
dHlTdG9yYWdlKCkKKyAgICAgICAgdm9pZCogYWRkcmVzc09mT3V0T2ZMaW5lU3RvcmFnZSgpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmbV9wcm9wZXJ0eVN0b3JhZ2U7CisgICAgICAg
ICAgICByZXR1cm4gJm1fb3V0T2ZMaW5lU3RvcmFnZTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAt
MjYxLDcgKzI5NCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklubGlu
ZVN0b3JhZ2UoKTsKLSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlByb3BlcnR5U3RvcmFn
ZSgpOworICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpOwog
ICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5oZXJpdG9ySUQoKTsKIAogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtMjcxLDcgKzMw
NCw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAg
ewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5pc0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVs
bCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOwogICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc09iamVjdCgpKTsKQEAgLTI4Nyw3ICszMjAs
NyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAKICAgICAgICAg
Ly8gVG8gaW5zdGFudGlhdGUgb2JqZWN0cyB5b3UgbGlrZWx5IHdhbnQgSlNGaW5hbE9iamVjdCwg
YmVsb3cuCiAgICAgICAgIC8vIFRvIGNyZWF0ZSBkZXJpdmVkIHR5cGVzIHlvdSBsaWtlbHkgd2Fu
dCBKU05vbkZpbmFsT2JqZWN0LCBiZWxvdy4KLSAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOworICAgICAgICBK
U09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAgIHZv
aWQgcmVzZXRJbmhlcml0b3JJRCgpCiAgICAgICAgIHsKQEAgLTMwNSwxOSArMzM4LDYgQEAgQ09N
UElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB2b2lkIGlzT2Jq
ZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0
UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dHlTdG9yYWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3Jh
Z2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQotCi0gICAgICAgIGNvbnN0
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdl
KClbb2Zmc2V0XTsKLSAgICAgICAgfQotCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XTsKLSAgICAgICAgfQotCiAgICAg
ICAgIHRlbXBsYXRlPFB1dE1vZGU+CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9w
ZXJ0eVNsb3QmLCBKU0NlbGwqKTsKIApAQCAtMzI3LDcgKzM0Nyw3IEBAIENPTVBJTEVfQVNTRVJU
KChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5k
UHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAg
ICAgU3RydWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAotICAgICAg
ICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKKyAgICAgICAgU3RvcmFnZUJhcnJp
ZXIgbV9vdXRPZkxpbmVTdG9yYWdlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2luaGVyaXRvcklEOwogICAgIH07CiAKQEAgLTM1MywxNCArMzczLDE0IEBAIENPTVBJTEVfQVNT
RVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
ZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUsIDApCisgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkK
ICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXRo
aXMtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIEFT
U0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzgxLDYgKzQwMSw4IEBA
IENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oRmluYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwog
ICAgICAgICB9CiAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCiAgICAgICAgIHN0YXRpYyBKU19FWFBP
UlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGljIGJvb2wgaGFz
SW5saW5lU3RvcmFnZSgpCkBAIC0zODgsMTEgKzQxMCwxNCBAQCBDT01QSUxFX0FTU0VSVCgoSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuQ29tbW9uKFNsb3RW
aXNpdG9yJik7CisgICAgICAgIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQoIShPQkpFQ1RfT0ZGU0VUT0Yo
SlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkgPT0gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpOworICAgICAgICAgICAg
QVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpID09IGlubGluZVN0b3Jh
Z2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQodGhpcy0+c3RydWN0dXJlKCktPnRvdGFs
U3RvcmFnZUNhcGFjaXR5KCkgPT0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKICAgICAgICAgICAg
IEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgICAgIH0KIApAQCAtNDAwLDEzICs0MjUsMTMgQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKICAgICAgICAgZXhwbGljaXQg
SlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5s
aW5lU3RvcmFnZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGluZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxp
bmVTdG9yYWdlQ2FwYWNpdHldOworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG1f
aW5saW5lU3RvcmFnZVtJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWV07CiAgICAgfTsKIAogaW5saW5l
IEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNDMxLDkgKzQ1Niw5IEBAIGlubGluZSBzaXplX3QgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3QKICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRmlu
YWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSk7CiB9CiAKLWlubGluZSBzaXplX3QgSlNPYmplY3Q6
Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkKK2lubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpCiB7Ci0gICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09i
amVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpOworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNP
YmplY3QsIG1fb3V0T2ZMaW5lU3RvcmFnZSk7CiB9CiAKIGlubGluZSBzaXplX3QgSlNPYmplY3Q6
Om9mZnNldE9mSW5oZXJpdG9ySUQoKQpAQCAtNDcxLDE0ICs0OTYsMTggQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmlzR2xvYmFsVGhpcygpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gR2xvYmFsVGhpc1R5cGU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpzZXRQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eVN0b3JhZ2Ugc3RvcmFnZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0T3V0T2ZMaW5lU3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5U3RvcmFnZSBzdG9yYWdlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBBU1NFUlQo
c3RvcmFnZSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
PmlzVXNpbmdJbmxpbmVTdG9yYWdlKCkKLSAgICAgICAgICAgfHwgKGNsYXNzSW5mbygpID09ICZK
U0ZpbmFsT2JqZWN0OjpzX2luZm8gJiYgc3RhdGljX2Nhc3Q8dm9pZCo+KHN0b3JhZ2UpID09IHN0
YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpKTsKKyAgICBpZiAoIXN0b3JhZ2UpIHsKKyAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBU1NF
UlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICB9CiAgICAgc2V0U3RydWN0dXJlKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSk7Ci0gICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KGdsb2JhbERhdGEs
IHRoaXMsIHN0b3JhZ2UpOworICAgIG1fb3V0T2ZMaW5lU3RvcmFnZS5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgc3RvcmFnZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxNiw5ICs1NDUs
OSBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJu
IGFzT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0OjpKU09iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKK2lubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTQ2VsbChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCB0aGlzLCBpbmxpbmVTdG9yYWdlKQorICAgICwgbV9vdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERh
dGEsIHRoaXMsIDApCiB7CiB9CiAKQEAgLTU0MiwxOSArNTcxLDYgQEAgaW5saW5lIFN0cnVjdHVy
ZSogSlNPYmplY3Q6OmluaGVyaXRvcklEKAogICAgIHJldHVybiBjcmVhdGVJbmhlcml0b3JJRChn
bG9iYWxEYXRhKTsKIH0KIAotaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmlubGluZVN0b3JhZ2VD
YXBhY2l0eSgpIGNvbnN0Ci17Ci0gICAgaWYgKGNsYXNzSW5mbygpID09ICZKU0ZpbmFsT2JqZWN0
OjpzX2luZm8pCi0gICAgICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBh
Y2l0eTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjppc1VzaW5n
SW5saW5lU3RvcmFnZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkgPj0gaW5saW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBwcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID09IGlubGluZVN0b3JhZ2VDYXBhY2l0eSgpOwotfQotCiBpbmxpbmUg
Ym9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKIHsKICAg
ICByZXR1cm4gY2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKQEAgLTYxMSwxMCArNjI3
LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSkgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbmFtZS5pbXBs
KCktPmhhc0hhc2goKQorICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwo
KS0+aGFzSGFzaCgpCiAgICAgICAgICAgICA/IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQogICAgICAgICAgICAgOiBzdHJ1Y3R1cmUo
KS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0g
V1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAg
ICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQp
LT5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTY3Niw4ICs2OTIsOCBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKHN0cnVj
dHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmli
dXRlczsKICAgICAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAg
c2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBp
ZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRB
dHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIGlmIChvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5
IGEgc3BlY2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAg
ICAgICAgLy8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5Lgog
ICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0
aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKQEAgLTcwMCwxMyArNzE2LDE0IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgaWYgKChtb2Rl
ID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3Rv
cmFnZSgpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93UHJvcGVydHlTdG9y
YWdlKCkpCi0gICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd1Byb3BlcnR5U3RvcmFnZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgc3RydWN0dXJl
KCktPnN1Z2dlc3RlZE5ld1Byb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgIFByb3BlcnR5
U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOworICAgICAgICBpZiAoc3Ry
dWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3
U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOworICAgICAgICBzZXRPdXRPZkxpbmVTdG9yYWdl
KGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKIAotICAgICAgICBBU1NFUlQo
b2Zmc2V0IDwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAg
ICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlz
VmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRh
LCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQgb24gc2V0TmV3UHJvcGVy
dHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQpAQCAtNzE0LDE1
ICs3MzEsMTYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzaXplX3Qgb2Zmc2V0OwotICAgIHNpemVf
dCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0
eSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIGlmIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZSh0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY0Z1bmN0aW9uLCBvZmZzZXQpKSB7Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9y
YWdlID0gcHJvcGVydHlTdG9yYWdlKCk7IAotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9
IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIG5ld1N0
b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwg
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLQotICAgICAgICBBU1NFUlQo
b2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAg
c2V0UHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0gb3V0T2ZMaW5lU3RvcmFnZSgpOyAK
KyAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpCisgICAgICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xv
YmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OworCisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CisgICAgICAgIHNldE91dE9mTGluZVN0b3Jh
Z2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKTsKICAgICAgICAgcHV0RGlyZWN0
T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBUaGlzIGlzIGEg
bmV3IHByb3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNwZWNpZmljIHZhbHVlcyBhcmUgbm90IGN1
cnJlbnRseSBjYWNoYWJsZSwKICAgICAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5j
YWNoYWJsZSBzdGF0ZS4KQEAgLTczNCw3ICs3NTIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAg
SlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsK
KyAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgaWYgKChtb2RlID09
IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTc2OCw3ICs3ODYsOCBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHRoaXMtPnN0cnVjdHVyZSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7CiAg
ICAgCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoc3RydWN0dXJl
LT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVT
dG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHB1dERpcmVj
dE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTc4MSwyMiArODAwLDIyIEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5ld1N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKG9sZENhcGFjaXR5IDw9IG5l
d1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgCi0gICAgaWYgKG9sZENhcGFj
aXR5ID09IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgIGlm
IChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAg
ICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2UgPSBncm93
UHJvcGVydHlTdG9yYWdlKAotICAgICAgICBnbG9iYWxEYXRhLCBvbGRDYXBhY2l0eSwgbmV3U3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRQcm9wZXJ0eVN0b3Jh
Z2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwgbmV3U3RydWN0dXJlKTsKKyAgICBQcm9wZXJ0eVN0
b3JhZ2UgbmV3U3RvcmFnZSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKAorICAgICAgICBnbG9iYWxE
YXRhLCBvbGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAg
ICBzZXRPdXRPZkxpbmVTdG9yYWdlKGdsb2JhbERhdGEsIG5ld1N0b3JhZ2UsIG5ld1N0cnVjdHVy
ZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRl
U3RvcmFnZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5l
Y2Vzc2FyeSgKLSAgICAgICAgZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQpAQCAtODI0LDExICs4NDMsMTEgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERp
cmVjdChKU0dsb2JhbAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZh
bHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKLSAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3U3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwotICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKSkKLSAgICAgICAgbmV3U3Rv
cmFnZSA9IGdyb3dQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdQcm9wZXJ0eVN0
b3JhZ2VTaXplKCkpOwotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAgc2V0UHJvcGVydHlTdG9yYWdlKGdsb2Jh
bERhdGEsIG5ld1N0b3JhZ2UsIHN0cnVjdHVyZSgpKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UgbmV3
U3RvcmFnZSA9IG91dE9mTGluZVN0b3JhZ2UoKTsKKyAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdp
bGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdTdG9yYWdlID0gZ3Jvd091dE9m
TGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCks
IHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Cisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRDYWxs
YWJsZU9iamVjdCh2YWx1ZSkpOworICAgIHNldE91dE9mTGluZVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
bmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRh
LCBvZmZzZXQsIHZhbHVlKTsKIH0KIApAQCAtOTA2LDggKzkyNSw2IEBAIGlubGluZSB2b2lkIEpT
VmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXQKICAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+
cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCi0vLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQogQUxXQVlTX0lOTElORSBKU09iamVjdCogUmVnaXN0ZXI6OmZ1bmN0aW9uKCkgY29u
c3QKIHsKICAgICBpZiAoIWpzVmFsdWUoKSkKQEAgLTkyMiw2ICs5MzksMzIgQEAgQUxXQVlTX0lO
TElORSBSZWdpc3RlciBSZWdpc3Rlcjo6d2l0aENhbAogICAgIHJldHVybiByOwogfQogCisvLyBU
aGlzIGlzIGEgaGVscGVyIGZvciBwYXRjaGluZyBjb2RlIHdoZXJlIHlvdSB3YW50IHRvIGVtaXQg
YSBsb2FkIG9yIHN0b3JlIGFuZAorLy8gdGhlIGJhc2UgaXM6CisvLyBGb3IgaW5saW5lIG9mZnNl
dHM6IGEgcG9pbnRlciB0byB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZSBwb2ludGVyLgorLy8gRm9y
IG91dC1vZi1saW5lIG9mZnNldHM6IHRoZSBiYXNlIG9mIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdl
LgoraW5saW5lIHNpemVfdCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQoreworICAgIGlmIChpc091dE9mTGluZU9mZnNldChvZmZzZXQpKQorICAg
ICAgICByZXR1cm4gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShvZmZzZXQpOworICAgIHJldHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdl
KCkgLSBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkgKyBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7Cit9CisKK2lubGluZSBp
bnQgaW5kZXhSZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYg
KGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9m
TGluZVN0b3JhZ2Uob2Zmc2V0KTsKKyAgICBBU1NFUlQoIShKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBv
ZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5lIGludCBvZmZzZXRSZWxh
dGl2ZVRvQmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgaWYgKGlzT3V0T2ZMaW5l
T2Zmc2V0KG9mZnNldCkpCisgICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
b2Zmc2V0KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBKU09iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTIxODY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKiBKU1Byb3BlcnR5TmFtZUl0CiAgICAgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3RzID0gMDsK
ICAgICBpZiAoIW8tPnN0cnVjdHVyZSgpLT5oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpICYm
ICFvLT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCiAgICAgICAgICYm
ICFvLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAmJiAhby0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQotICAgICAgICBu
dW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7
CisgICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFn
ZVNpemUoKTsKICAgICAKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVy
dHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3RzKTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSk7CisgICAg
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1l
cy5kYXRhKCksIG8pOwogCiAgICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkK
ICAgICAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
CShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0Nyw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCiAgICAgICAgIHN0
YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KTsKLSAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBz
aXplX3QgbnVtQ2FjaGVhYmxlU2xvdCkKLSAgICAgICAgewotICAgICAgICAgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIG51bUNhY2hlYWJsZVNsb3QpOwotICAgICAg
ICAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0
YSk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7Ci0gICAgICAgIH0KIAogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgIApAQCAtNjMsMTEgKzU3LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwg
aW50JiBvZmZzZXQpCisgICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaSA+PSBtX251bUNhY2hl
YWJsZVNsb3RzKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG9m
ZnNldCA9IGk7CisgICAgICAgICAgICBvZmZzZXQgPSBpICsgbV9vZmZzZXRCYXNlOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtODgsMTIgKzgyLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhKQorICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRh
KiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAg
ICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVy
dHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9qc1N0cmluZ3NTaXplOyAr
K2kpCiAgICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmlu
ZygpKSk7CisgICAgICAgICAgICBtX29mZnNldEJhc2UgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5m
aXJzdFZhbGlkT2Zmc2V0KCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC0xMDUsNiAr
MTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVD
aGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICAgICAgdWludDMyX3QgbV9udW1DYWNo
ZWFibGVTbG90czsKICAgICAgICAgdWludDMyX3QgbV9qc1N0cmluZ3NTaXplOworICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldEJhc2U7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMwLDggKzEzMCw4IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAK
ICAgICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAg
c2l6ZV90IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5z
dHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAg
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgICAgIGlm
IChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4ganNBZGRTbG93Q2FzZShjYWxsRnJhbWUsIHYxLCB2Mik7CiAg
ICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgc2xvdE9mZnNldCkKKyAgICBpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlPZmZzZXQmIHNsb3RPZmZzZXQpCiAgICAgewogICAgICAgICBKU0NlbGwqIGNlbGwg
PSBiYXNlLmFzQ2VsbCgpOwogICAgICAgICBzaXplX3QgY291bnQgPSAwOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEyMTg2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUsNyArMTA1LDYgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVOdW1iZXJPZkdDTWFy
a2VycwogICAgIHJldHVybiBjcHVzVG9Vc2U7CiB9CiAKLQogT3B0aW9uczo6RW50cnkgT3B0aW9u
czo6c19vcHRpb25zW09wdGlvbnM6Om51bWJlck9mT3B0aW9uc107CiAKIC8vIFJlYWxpemUgdGhl
IG5hbWVzIGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgpAQCAtMTE5LDExICsxMTgsMTEgQEAgY29u
c3QgT3B0aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aQogdm9pZCBPcHRpb25zOjppbml0
aWFsaXplKCkKIHsKICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0
aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgRk9SX0VBQ0hfT1BUSU9OKHR5cGVfLCBuYW1l
XywgZGVmYXVsdFZhbHVlXykgXAorI2RlZmluZSBGT1JfRUFDSF9PUFRJT04odHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfKSAgICBcCiAgICAgbmFtZV8oKSA9IGRlZmF1bHRWYWx1ZV87CiAgICAg
SlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZPUl9FQUNIX09QVElPTgotCisg
ICAgICAgIAogICAgIC8vIEFsbG93IGVudmlyb25tZW50IHZhcnMgdG8gb3ZlcnJpZGUgb3B0aW9u
cyBpZiBhcHBsaWNhYmxlLgogICAgIC8vIFRoZSBldm4gdmFyIHNob3VsZCBiZSB0aGUgbmFtZSBv
ZiB0aGUgb3B0aW9uIHByZWZpeGVkIHdpdGgKICAgICAvLyAiSlNDXyIuCkBAIC0xMzIsOSArMTMx
LDEyIEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAgICAgb3ZlcnJpZGVPcHRpb25XaXRo
SGV1cmlzdGljKG5hbWVfKCksICJKU0NfIiAjbmFtZV8pOwogICAgIEpTQ19PUFRJT05TKEZPUl9F
QUNIX09QVElPTikKICN1bmRlZiBGT1JfRUFDSF9PUFRJT04KLSAgICAKICNlbmRpZiAvLyBSVU5f
VElNRV9IRVVSSVNUSUNTCiAKKyNpZiAwCisgICAgOyAvLyBEZWNvbmZ1c2UgZWRpdG9ycyB0aGF0
IGRvIGF1dG8gaW5kZW50YXRpb24KKyNlbmRpZgorICAgIAogICAgIC8vIERvIHJhbmdlIGNoZWNr
cyB3aGVyZSBuZWVkZWQgYW5kIG1ha2UgY29ycmVjdGlvbnMgdG8gdGhlIG9wdGlvbnM6CiAgICAg
QVNTRVJUKHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkgPj0gdGhyZXNob2xk
Rm9yT3B0aW1pemVBZnRlcldhcm1VcCgpKTsKICAgICBBU1NFUlQodGhyZXNob2xkRm9yT3B0aW1p
emVBZnRlcldhcm1VcCgpID49IHRocmVzaG9sZEZvck9wdGltaXplU29vbigpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFi
bGUuaAkocmV2aXNpb24gMTIxODY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAog
I2lmbmRlZiBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRh
YmxlX2gKIAorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4K
QEAgLTcyLDExICs3MywxMSBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVk
IHYpCiAKIHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJpbmdJbXBsKiBrZXk7Ci0g
ICAgdW5zaWduZWQgb2Zmc2V0OworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IHNwZWNpZmljVmFsdWU7
CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxs
KiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSkKICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAg
ICAgICwgYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQpAQCAtMTc0LDggKzE3NSwxMCBAQCBwdWJsaWM6
CiAgICAgLy8gVXNlZCB0byBtYWludGFpbiBhIGxpc3Qgb2YgdW51c2VkIGVudHJpZXMgaW4gdGhl
IHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAg
Ym9vbCBoYXNEZWxldGVkT2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgZ2V0RGVsZXRlZE9mZnNldCgp
OwotICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOworICAgIFByb3Bl
cnR5T2Zmc2V0IGdldERlbGV0ZWRPZmZzZXQoKTsKKyAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOworICAgIAorICAgIFByb3BlcnR5T2Zmc2V0IG5leHRPZmZzZXQoSlNU
eXBlKTsKIAogICAgIC8vIENvcHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29w
eSBoYXMgYXQgbGVhc3QgdGhlIGNhcGFjaXR5IHByb3ZpZGVkLgogICAgIFBhc3NPd25QdHI8UHJv
cGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBu
ZXdDYXBhY2l0eSk7CkBAIC0yMzAsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCog
bV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAgIHVuc2lnbmVkIG1fZGVsZXRl
ZENvdW50OwotICAgIE93blB0cjwgVmVjdG9yPHVuc2lnbmVkPiA+IG1fZGVsZXRlZE9mZnNldHM7
CisgICAgT3duUHRyPCBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+ID4gbV9kZWxldGVkT2Zmc2V0czsK
IAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNaW5pbXVtVGFibGVTaXplID0gMTY7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEVtcHR5RW50cnlJbmRleCA9IDA7CkBAIC0yNjQsOSArMjY3
LDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbAogICAgIH0KIAog
ICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgotICAgIFZlY3Rvcjx1bnNp
Z25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgp
OworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhl
ci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQot
ICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4o
Km90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9
CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpT
Q2VsbCogb3duZXIsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJs
ZSYgb3RoZXIpCkBAIC0yODgsOSArMjkxLDkgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3Bl
cnR5VGFibGUoSlNHbAogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMg
dmVjdG9yLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhl
ci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOworICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90
aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlm
IChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQ
dHIobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNldHMpKTsKKyAgICAgICAg
bV9kZWxldGVkT2Zmc2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KCpv
dGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjp+UHJvcGVy
dHlUYWJsZSgpCkBAIC00NjksMjAgKzQ3MiwzMSBAQCBpbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxl
OjpoYXNEZWxldGVkT2ZmCiAgICAgcmV0dXJuIG1fZGVsZXRlZE9mZnNldHMgJiYgIW1fZGVsZXRl
ZE9mZnNldHMtPmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6
OmdldERlbGV0ZWRPZmZzZXQoKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6
OmdldERlbGV0ZWRPZmZzZXQoKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZGVsZXRlZE9m
ZnNldHMtPmxhc3QoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2RlbGV0ZWRPZmZz
ZXRzLT5sYXN0KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+cmVtb3ZlTGFzdCgpOwogICAgIHJl
dHVybiBvZmZzZXQ7CiB9CiAKLWlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRP
ZmZzZXQodW5zaWduZWQgb2Zmc2V0KQoraW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVs
ZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRP
ZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1
bnNpZ25lZD4pOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4pOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQp
OwogfQogCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNldChK
U1R5cGUgdHlwZSkKK3sKKyAgICBpZiAoaGFzRGVsZXRlZE9mZnNldCgpKQorICAgICAgICByZXR1
cm4gZ2V0RGVsZXRlZE9mZnNldCgpOworICAgIAorICAgIGlmICh0eXBlID09IEZpbmFsT2JqZWN0
VHlwZSkKKyAgICAgICAgcmV0dXJuIHNpemUoKTsKKyAgICAKKyAgICByZXR1cm4gc2l6ZSgpICsg
Zmlyc3RPdXRPZkxpbmVPZmZzZXQ7Cit9CisKIGlubGluZSBQYXNzT3duUHRyPFByb3BlcnR5VGFi
bGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQobmV3Q2FwYWNpdHkg
Pj0gbV9rZXlDb3VudCk7CkBAIC00OTksNyArNTEzLDcgQEAgaW5saW5lIHNpemVfdCBQcm9wZXJ0
eVRhYmxlOjpzaXplSW5NZW1vcgogewogICAgIHNpemVfdCByZXN1bHQgPSBzaXplb2YoUHJvcGVy
dHlUYWJsZSkgKyBkYXRhU2l6ZSgpOwogICAgIGlmIChtX2RlbGV0ZWRPZmZzZXRzKQotICAgICAg
ICByZXN1bHQgKz0gKG1fZGVsZXRlZE9mZnNldHMtPmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWdu
ZWQpKTsKKyAgICAgICAgcmVzdWx0ICs9IChtX2RlbGV0ZWRPZmZzZXRzLT5jYXBhY2l0eSgpICog
c2l6ZW9mKFByb3BlcnR5T2Zmc2V0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlP
ZmZzZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9wZXJ0eU9mZnNldF9oCisj
ZGVmaW5lIFByb3BlcnR5T2Zmc2V0X2gKKworI2luY2x1ZGUgIkpTVHlwZS5oIgorI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoSlNWQUxV
RTMyXzY0KQorI2RlZmluZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA2CisjZWxzZQorI2RlZmlu
ZSBJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSA0CisjZW5kaWYKKwordHlwZWRlZiBpbnQgUHJvcGVy
dHlPZmZzZXQ7CisKK3N0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBpbnZhbGlkT2Zmc2V0ID0g
LTE7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW5saW5lU3RvcmFnZUNhcGFjaXR5ID0g
SU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFk7CitzdGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZmly
c3RPdXRPZkxpbmVPZmZzZXQgPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisKKy8vIERlY2xhcmUg
YWxsIG9mIHRoZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IHRlbmQgdG8gZG8gZm9yd2FyZCBjYWxs
cy4KK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSB2b2lk
IGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0LCBKU1R5cGUpOworaW5saW5lIHZvaWQgdmFsaWRh
dGVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJv
cGVydHlPZmZzZXQsIEpTVHlwZSk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5
T2Zmc2V0KTsKK2lubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lu
bGluZSBib29sIGlzT3V0T2ZMaW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXpl
X3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3Qg
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKK2lubGluZSBzaXplX3Qg
b2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFnZShQcm9wZXJ0eU9mZnNldCk7CitpbmxpbmUgc2l6ZV90
IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKK2lu
bGluZSBzaXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQsIEpT
VHlwZSk7CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKFByb3Bl
cnR5T2Zmc2V0LCBKU1R5cGUpOworaW5saW5lIFByb3BlcnR5T2Zmc2V0IGZpcnN0UHJvcGVydHlP
ZmZzZXRGb3IoSlNUeXBlKTsKKworaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIEFTU0VSVChvZmZz
ZXQgPj0gaW52YWxpZE9mZnNldCk7Cit9CisKK2lubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgSlNUeXBlIHR5cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNl
dCk7CisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIEFTU0VSVChvZmZzZXQgPj0gaW52YWxp
ZE9mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0CisgICAgICAgICAg
IHx8IHR5cGUgPT0gRmluYWxPYmplY3RUeXBlCisgICAgICAgICAgIHx8IGlzT3V0T2ZMaW5lT2Zm
c2V0KG9mZnNldCkpOworfQorCitpbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBBU1NFUlQoaXNW
YWxpZE9mZnNldChvZmZzZXQpKTsKK30KKworaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNldChvZmZz
ZXQsIHR5cGUpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworfQorCitpbmxp
bmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBjaGVj
a09mZnNldChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldDsKK30K
KworaW5saW5lIGJvb2wgaXNJbmxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorewor
ICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldCA8IGlubGluZVN0b3Jh
Z2VDYXBhY2l0eTsKK30KKworaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQoreworICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuICFp
c0lubGluZU9mZnNldChvZmZzZXQpOworfQorCitpbmxpbmUgc2l6ZV90IG9mZnNldEluSW5saW5l
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCit7CisgICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsKKyAgICBBU1NFUlQoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSk7CisgICAgcmV0dXJuIG9m
ZnNldDsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQoreworICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CisgICAgQVNT
RVJUKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOworICAgIHJldHVybiBvZmZzZXQgLSBmaXJz
dE91dE9mTGluZU9mZnNldDsKK30KKworaW5saW5lIHNpemVfdCBvZmZzZXRJblJlc3BlY3RpdmVT
dG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
b2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOwor
ICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KTsKK30KKworaW5saW5l
IHNpemVfdCBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCit7CisgICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0IDwg
Zmlyc3RPdXRPZkxpbmVPZmZzZXQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvZmZz
ZXQgLSBmaXJzdE91dE9mTGluZU9mZnNldCArIDE7Cit9CisKK2lubGluZSBzaXplX3QgbnVtYmVy
T2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBKU1R5cGUgdHlwZSkK
K3sKKyAgICBjaGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGlmICh0eXBlID09IEZpbmFs
T2JqZWN0VHlwZSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIDE7CisgICAgcmV0dXJuIG51bWJl
ck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG9mZnNldCk7Cit9CisKK2lubGluZSBQcm9w
ZXJ0eU9mZnNldCBuZXh0UHJvcGVydHlPZmZzZXRGb3IoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBK
U1R5cGUgdHlwZSkKK3sKKyAgICBjaGVja09mZnNldChvZmZzZXQsIHR5cGUpOworICAgIGlmICh0
eXBlICE9IEZpbmFsT2JqZWN0VHlwZSAmJiBvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAg
ICAgcmV0dXJuIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0OworICAgIHJldHVybiBvZmZzZXQgKyAxOwor
fQorCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihKU1R5cGUg
dHlwZSkKK3sKKyAgICByZXR1cm4gbmV4dFByb3BlcnR5T2Zmc2V0Rm9yKGludmFsaWRPZmZzZXQs
IHR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFByb3BlcnR5T2Zm
c2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNs
dWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiUHJv
cGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC04OSw3ICs5MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUgY2FjaGVkUHJvcGVydHlU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGU7IH0KICAgICAgICAgYm9v
bCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlICE9IFVu
Y2FjaGVhYmxlOyB9CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGVWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlID09IFZhbHVlOyB9Ci0gICAgICAgIHNpemVfdCBjYWNo
ZWRPZmZzZXQoKSBjb25zdAorICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CkBAIC0xMDQsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1ZSBzbG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSwgc2l6
ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1Zh
bHVlIHZhbHVlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gSlNDX1ZBTFVFX01BUktF
UjsKQEAgLTE2MCw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZGF0
YS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0
Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RCYXNlLCBKU09iamVjdCogZ2V0dGVyRnVu
YywgdW5zaWduZWQgb2Zmc2V0KQorICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3Qo
SlNWYWx1ZSBzbG90QmFzZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdldHRlckZ1bmMpOwogICAgICAg
ICAgICAgbV9nZXRWYWx1ZSA9IEdFVFRFUl9GVU5DVElPTl9NQVJLRVI7CkBAIC0yMDYsNyArMjA3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENsZWFyIG9m
ZnNldCBldmVuIGluIHJlbGVhc2UgYnVpbGRzLCBpbiBjYXNlIHRoaXMgUHJvcGVydHlTbG90IGhh
cyBiZWVuIHVzZWQgYmVmb3JlLgogICAgICAgICAgICAgLy8gKEZvciBvdGhlciBkYXRhIG1lbWJl
cnMsIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIgYW55dGhpbmcgYmVjYXVzZSByZXVzZSB3b3VsZCBt
ZWFuaW5nZnVsbHkgb3ZlcndyaXRlIHRoZW0uKQotICAgICAgICAgICAgbV9vZmZzZXQgPSAwOwor
ICAgICAgICAgICAgbV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAgICAgICAgbV9jYWNo
ZWRQcm9wZXJ0eVR5cGUgPSBVbmNhY2hlYWJsZTsKICAgICAgICAgfQogCkBAIC0yMzIsNyArMjMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICAgICAg
SlNWYWx1ZSBtX3RoaXNWYWx1ZTsKIAotICAgICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUgbV9j
YWNoZWRQcm9wZXJ0eVR5cGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDEyMTg2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgc2V0RXhpc3RpbmdQcm9wZXJ0eShKU09iamVjdCogYmFzZSwg
c2l6ZV90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRFeGlzdGluZ1Byb3BlcnR5KEpTT2JqZWN0
KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
dHlwZSA9IEV4aXN0aW5nUHJvcGVydHk7CiAgICAgICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAg
ICAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNl
dE5ld1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBzaXplX3Qgb2Zmc2V0KQorICAgICAgICB2b2lk
IHNldE5ld1Byb3BlcnR5KEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5OwogICAgICAgICAgICAg
bV9iYXNlID0gYmFzZTsKQEAgLTY0LDcgKzY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQog
ICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IFVuY2Fj
aGFibGU7IH0KLSAgICAgICAgc2l6ZV90IGNhY2hlZE9mZnNldCgpIGNvbnN0IHsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0Owog
ICAgICAgICB9CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6
CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgICAgICBKU09iamVjdCogbV9iYXNlOwotICAgICAg
ICBzaXplX3QgbV9vZmZzZXQ7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAg
ICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTIxODY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDggKzE1Niw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSkKICAgICAs
IG1fY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQo
SW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkodHlw
ZUluZm8uaXNGaW5hbE9iamVjdCgpID8gSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNp
dHkgOiAwKQotICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCisgICAgLCBtX291dE9mTGluZUNhcGFj
aXR5KDApCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5
S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShm
YWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKQEAgLTE3OSw4
ICsxNzksOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAg
LCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBqc051bGwoKSkKICAgICAsIG1fY2xhc3NJ
bmZvKCZzX2luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVk
V2F0Y2hpbmcpCi0gICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KDApCi0gICAgLCBtX29m
ZnNldChub09mZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkoMCkKKyAgICAsIG1fb2Zm
c2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5
S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQpAQCAtMjAwLDggKzIwMCw4IEBAIFN0cnVjdHVy
ZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICAsIG1fcHJvdG90eXBlKGdsb2Jh
bERhdGEsIHRoaXMsIHByZXZpb3VzLT5zdG9yZWRQcm90b3R5cGUoKSkKICAgICAsIG1fY2xhc3NJ
bmZvKHByZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRT
ZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKLSAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
cHJldmlvdXMtPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpCi0gICAgLCBtX29mZnNldChub09m
ZnNldCkKKyAgICAsIG1fb3V0T2ZMaW5lQ2FwYWNpdHkocHJldmlvdXMtPm1fb3V0T2ZMaW5lQ2Fw
YWNpdHkpCisgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICwgbV9kaWN0aW9uYXJ5
S2luZChwcmV2aW91cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0
eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZpb3Vz
LT5tX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMpCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBT
dHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJl
LT5tX3ByZXZpb3VzKTsKIAotICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJl
LT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbV9vZmZzZXQgKyAxKTsKKyAg
ICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5j
b3B5KGdsb2JhbERhdGEsIDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBt
X3R5cGVJbmZvLnR5cGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoK
ICAgICB9CiAKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVy
dHlNYXAobV9vZmZzZXQgKyAxKTsKKyAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZT
bG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CiAKICAgICBm
b3IgKHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkgewog
ICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMjU2LDIxICsyNTYsMjEgQEAg
dm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIH0KIAotaW5s
aW5lIHNpemVfdCBuZXh0UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1cnJlbnRDYXBh
Y2l0eSkKK2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3Qg
Y3VycmVudENhcGFjaXR5KQogewogICAgIGlmICghY3VycmVudENhcGFjaXR5KQogICAgICAgICBy
ZXR1cm4gNDsKICAgICByZXR1cm4gY3VycmVudENhcGFjaXR5ICogMjsKIH0KIAotdm9pZCBTdHJ1
Y3R1cmU6Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCit2b2lkIFN0cnVjdHVyZTo6Z3Jv
d091dE9mTGluZUNhcGFjaXR5KCkKIHsKLSAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5ID0g
bmV4dFByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpOwor
ICAgIG1fb3V0T2ZMaW5lQ2FwYWNpdHkgPSBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG1f
b3V0T2ZMaW5lQ2FwYWNpdHkpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdQ
cm9wZXJ0eVN0b3JhZ2VTaXplKCkKK3NpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9m
TGluZVN0b3JhZ2VDYXBhY2l0eSgpCiB7Ci0gICAgcmV0dXJuIG5leHRQcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eShtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gbmV4dE91dE9m
TGluZVN0b3JhZ2VDYXBhY2l0eShtX291dE9mTGluZUNhcGFjaXR5KTsKIH0KICAKIHZvaWQgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQg
U3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3QKICAgICBlbnRyeS0+c3BlY2lmaWNW
YWx1ZS5jbGVhcigpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKQEAg
LTI5Niw3ICsyOTYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5z
aXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlmIChzcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBzcGVjaWZp
Y1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1Ry
YW5zaXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKKyAgICAgICAgdmFsaWRhdGVPZmZzZXQo
ZXhpc3RpbmdUcmFuc2l0aW9uLT5tX29mZnNldCwgc3RydWN0dXJlLT5tX3R5cGVJbmZvLnR5cGUo
KSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9vZmZzZXQ7CiAgICAg
ICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICByZXR1cm4gMDsK
IH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNp
emVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNw
ZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBp
cwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkg
bmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zMjcsOCArMzI3LDggQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAgIG9m
ZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgaWYgKHRyYW5zaXRpb24t
PnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKTsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUoKSA+IHRyYW5zaXRp
b24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0
T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogICAg
IApAQCAtMzUzLDE1ICszNTMsMTUgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdAogICAgIH0KIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dFNwZWNpZmljVmFs
dWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsK
LSAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCk7CisgICAgaWYgKHRyYW5zaXRpb24tPm91dE9mTGluZVNpemUo
KSA+IHRyYW5zaXRpb24tPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgIHRyYW5zaXRpb24t
Pmdyb3dPdXRPZkxpbmVDYXBhY2l0eSgpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwg
dHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgc2l6ZV90
JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJU
KCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogCkBAIC01NDgsMTggKzU0
OCwxOSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTCiAKICAgICAg
ICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKTsKICAgICAg
ICAgVmVjdG9yPEpTVmFsdWU+IHZhbHVlcyhwcm9wZXJ0eUNvdW50KTsKLQorICAgICAgICAKICAg
ICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGZpcnN0T2Zmc2V0
ID0gZmlyc3RQcm9wZXJ0eU9mZnNldEZvcihtX3R5cGVJbmZvLnR5cGUoKSk7CiAgICAgICAgIFBy
b3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAg
ICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytpKSB7CiAgICAgICAgICAgICB2YWx1ZXNb
aV0gPSBvYmplY3QtPmdldERpcmVjdE9mZnNldChpdGVyLT5vZmZzZXQpOwogICAgICAgICAgICAg
Ly8gVXBkYXRlIHByb3BlcnR5IHRhYmxlIHRvIGhhdmUgdGhlIG5ldyBwcm9wZXJ0eSBvZmZzZXRz
Ci0gICAgICAgICAgICBpdGVyLT5vZmZzZXQgPSBpOworICAgICAgICAgICAgaXRlci0+b2Zmc2V0
ID0gaSArIGZpcnN0T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDb3B5
IHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSB2YWx1ZXMgaW50byB0aGVpciBmaW5hbCBsb2NhdGlvbnMK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7IGkrKykKLSAg
ICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIGksIHZhbHVlc1tp
XSk7CisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBmaXJz
dE9mZnNldCArIGksIHZhbHVlc1tpXSk7CiAKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVh
ckRlbGV0ZWRPZmZzZXRzKCk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICByZXR1cm4gdGhpczsKIH0KIAotc2l6
ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKQEAgLTU3OSwx
MyArNTgwLDEzIEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW4KICAg
ICAKICAgICBwaW4oKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXRTcGVjaWZpY1ZhbHVlKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7Ci0gICAg
aWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0g
ICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHB1dFNwZWNpZmljVmFsdWUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAob3V0T2ZMaW5lU2l6ZSgpID4gb3V0T2ZM
aW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgcmV0
dXJuIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NF
UlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CkBAIC01OTMsOCArNTk0LDcgQEAgc2l6ZV90IFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJ
Zk5lY2Vzc2FyeUZvclBpbm5pbmcoZ2xvYmFsRGF0YSk7CiAKICAgICBwaW4oKTsKLSAgICBzaXpl
X3Qgb2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAg
ICByZXR1cm4gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpwaW4o
KQpAQCAtNjM5LDIwICs2MzksMjAgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1
cmU6OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBv
d25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3Bl
cnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3Bl
cnR5VGFibGUobV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQpKTsKKyAgICByZXR1
cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0
YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVyT2ZT
bG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSkpOwogfQogCi1z
aXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0lu
Zm8oKSA9PSAmc19pbmZvKTsKIAogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2Fy
eShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bm90Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCiAgICAgUHJv
cGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmQocHJvcGVydHlOYW1l
LnVpZCgpKS5maXJzdDsKICAgICBpZiAoIWVudHJ5KQotICAgICAgICByZXR1cm4gV1RGOjpub3RG
b3VuZDsKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBhdHRyaWJ1dGVzID0g
ZW50cnktPmF0dHJpYnV0ZXM7CiAgICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1Zh
bHVlLmdldCgpOwpAQCAtNjg1LDkgKzY4NSw5IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlB
bGxGdW5jdGlvbnMoSlMKICAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZS5jbGVhcigpOwogfQog
Ci1zaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpwdXRTcGVjaWZp
Y1ZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewotICAgIEFT
U0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBub3RGb3VuZCk7CisgICAgQVNT
RVJUKCFKU0M6OmlzVmFsaWRPZmZzZXQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkpKTsK
IAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVt
KQpAQCAtNjk4LDEyICs2OTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVl
KEpTR2xvCiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIGNyZWF0ZVByb3BlcnR5
TWFwKCk7CiAKLSAgICB1bnNpZ25lZCBuZXdPZmZzZXQ7Ci0KLSAgICBpZiAobV9wcm9wZXJ0eVRh
YmxlLT5oYXNEZWxldGVkT2Zmc2V0KCkpCi0gICAgICAgIG5ld09mZnNldCA9IG1fcHJvcGVydHlU
YWJsZS0+Z2V0RGVsZXRlZE9mZnNldCgpOwotICAgIGVsc2UKLSAgICAgICAgbmV3T2Zmc2V0ID0g
bV9wcm9wZXJ0eVRhYmxlLT5zaXplKCk7CisgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0g
bV9wcm9wZXJ0eVRhYmxlLT5uZXh0T2Zmc2V0KG1fdHlwZUluZm8udHlwZSgpKTsKIAogICAgIG1f
cHJvcGVydHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVw
LCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIApAQCAtNzExLDIwICs3
MDYsMjAgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZShKU0dsbwogICAgIHJl
dHVybiBuZXdPZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZShQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKICAgICBT
dHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAgICByZXR1cm4gaW52YWxp
ZE9mZnNldDsKIAogICAgIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgcG9zaXRpb24gPSBt
X3Byb3BlcnR5VGFibGUtPmZpbmQocmVwKTsKICAgICBpZiAoIXBvc2l0aW9uLmZpcnN0KQotICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogCi0g
ICAgc2l6ZV90IG9mZnNldCA9IHBvc2l0aW9uLmZpcnN0LT5vZmZzZXQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsKIAogICAgIG1fcHJvcGVydHlU
YWJsZS0+cmVtb3ZlKHBvc2l0aW9uKTsKICAgICBtX3Byb3BlcnR5VGFibGUtPmFkZERlbGV0ZWRP
ZmZzZXQob2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCShyZXZpc2lvbiAxMjE4NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7
CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0Jik7
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlw
ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUp
OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwpAQCAtMTAzLDMyICsxMDMsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
aXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29u
c3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICAgICAgYm9vbCBkaWRUcmFu
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9Ci0gICAgICAgIGJvb2wg
cHV0V2lsbEdyb3dQcm9wZXJ0eVN0b3JhZ2UoKQorICAgICAgICBib29sIHB1dFdpbGxHcm93T3V0
T2ZMaW5lU3RvcmFnZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpID49IHByb3BlcnR5U3RvcmFnZVNpemUoKSk7CisgICAgICAgICAgICBB
U1NFUlQob3V0T2ZMaW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXplKCkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGN1cnJlbnRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ICsg
MSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0g
Y3VycmVudFNpemUpOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2l6ZSA9PSBwcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRT
aXplID0gbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVDYXBhY2l0eSgpID49IGN1cnJlbnRTaXplKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpemUgPT0gb3V0T2ZMaW5lQ2FwYWNpdHko
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCkpOworICAgICAgICAgICAgQVNTRVJUKHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgPj0gbV9w
cm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpOwogICAgICAgICAgICAgaWYgKG1f
cHJvcGVydHlUYWJsZS0+aGFzRGVsZXRlZE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkgPj0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkpOwotICAgICAgICAgICAgcmV0
dXJuIG1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpID09IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7
CisgICAgICAgICAgICBBU1NFUlQodG90YWxTdG9yYWdlQ2FwYWNpdHkoKSA+PSBtX3Byb3BlcnR5
VGFibGUtPnNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5zaXpl
KCkgPT0gdG90YWxTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgfQotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3Qgc3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpOyAKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3Jh
Z2VDYXBhY2l0eSgpOyAKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRo
IGNhdXRpb24uICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3Zl
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVt
b3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUp
OwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0
aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFy
eUtpbmQ7IH0KQEAgLTE0OSwxOCArMTQ5LDExNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAg
ICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpID09ICZzX2luZm8pOyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorICAg
ICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAgICAg
ICAgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7CisgICAgICAgIH0KICAgICAgICAgYm9vbCB0cmFu
c2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKTsKIAot
ICAgICAgICB2b2lkIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICB1bnNp
Z25lZCBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0IHsgQVNTRVJUKHN0cnVjdHVyZSgp
LT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHk7IH0KLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsgQVNT
RVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsgcmV0dXJuIChtX3Byb3Bl
cnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX29mZnNldCArIDEpKTsgfQotICAgICAgICBzaXplX3QgaW5saW5l
U3RvcmFnZUNhcGFjaXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSBjb25zdDsKLQotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5
TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYg
bmFtZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRh
JiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSk7CisgICAgICAgIHZvaWQgZ3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CisgICAgICAgIHVu
c2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICAgICAgICAg
IHJldHVybiBtX291dE9mTGluZUNhcGFjaXR5OworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVk
IG91dE9mTGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7Cisg
ICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgdG90YWxTaXplID0gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmxp
bmVTdG9yYWdlQ2FwYWNpdHkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JM
YXN0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBvdXRPZkxp
bmVTaXplRm9yS25vd25Ob25GaW5hbE9iamVjdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGVJbmZvLnR5cGUoKSAhPSBGaW5hbE9iamVjdFR5cGUpOworICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVt
YmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpOworICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOworICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRv
dGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gdGhpcy0+aW5saW5lQ2FwYWNpdHko
KTsKKyAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplIDwgaW5saW5lQ2FwYWNpdHkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNp
emUgLSBpbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBu
dW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CisgICAgICAgIH0K
KyAgICAgICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG1fdHlwZUluZm8udHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZTsKKyAgICAg
ICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGlubGluZVN0b3JhZ2VDYXBhY2l0eTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9CisgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemVGb3JLbm93bkZpbmFsT2JqZWN0KCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZUluZm8udHlwZSgpID09IEZp
bmFsT2JqZWN0VHlwZSk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQ7CisgICAgICAgICAg
ICBpZiAobV9wcm9wZXJ0eVRhYmxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVy
dHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5saW5lU3RvcmFnZUNhcGFjaXR5KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZUNhcGFjaXR5OworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBpbmxpbmVTaXplKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gaW5saW5lU2l6ZUZvcktub3du
RmluYWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VT
aXplKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9v
ZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCB0
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1
cm4gbV9vdXRPZkxpbmVDYXBhY2l0eSArIGlubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBmaXJzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAg
ICAgIH0KKyAgICAgICAgUHJvcGVydHlPZmZzZXQgbGFzdFZhbGlkT2Zmc2V0KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICAgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IHNpemUgPSBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0lubGluZVN0b3JhZ2UoKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZSArPSBpbmxpbmVTdG9yYWdlQ2FwYWNpdHk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHNpemUgLSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0
eU9mZnNldCBvZmZzZXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgPj0gZmlyc3RWYWxpZE9mZnNldCgpCisgICAgICAgICAgICAgICAgJiYgb2Zmc2V0IDw9IGxh
c3RWYWxpZE9mZnNldCgpOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdl
dChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgICAg
IGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0
dGVyU2V0dGVyUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc1JlYWRPbmx5T3JHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSBjb25zdCB7IHJldHVybiBtX2hhc1JlYWRP
bmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG87IH0KQEAgLTE3Nyw3ICsy
NzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNOb25FbnVtZXJhYmxl
UHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXM7
IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wcm9w
ZXJ0eVRhYmxlLT5pc0VtcHR5KCk7CisgICAgICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9m
ZnNldChtX29mZnNldCk7CisgICAgICAgIH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5h
bWUpOwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1f
c3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENv
dW50OyB9CkBAIC0yNzMsOCArMzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0gRGlj
dGlvbmFyeUtpbmQ7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAg
ICAgIHNpemVfdCBwdXRTcGVjaWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6
ZV90IHJlbW92ZShQcm9wZXJ0eU5hbWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBwdXRTcGVj
aWZpY1ZhbHVlKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3Zl
KFByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25l
ZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMw
MSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3Vu
dCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2Yg
dHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBz
aXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICBy
ZXR1cm4gbV9vZmZzZXQgPT0gbm9PZmZzZXQgPyAwIDogbV9vZmZzZXQgKyAxOworICAgICAgICAg
ICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZv
LnR5cGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFsaWQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSBjb25zdDsKQEAgLTMxMCw4ICs0
MTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4
VHJhbnNpdGlvbkxlbmd0aCA9IDY0OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbm9PZmZz
ZXQgPSAtMTsKLQogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5j
dGlvblRocmFzaENvdW50ID0gMzsKIAogICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwpAQCAt
MzM2LDEwICs0MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBtdXRh
YmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKIAotICAg
ICAgICB1aW50MzJfdCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OworICAgICAgICB1aW50MzJf
dCBtX291dE9mTGluZUNhcGFjaXR5OwogCiAgICAgICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFj
Y291bnQgZm9yIGFub255bW91cyBzbG90cwotICAgICAgICBpbnQgbV9vZmZzZXQ7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogCiAgICAgICAgIHVuc2lnbmVkIG1fZGljdGlvbmFy
eUtpbmQgOiAyOwogICAgICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlIDogMTsKQEAg
LTM1MywyNiArNDUyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0
YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1
cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYg
KCFtX3Byb3BlcnR5VGFibGUpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAg
ICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIAogICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBl
bnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpLmZpcnN0Owot
ICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogbm90Rm91bmQ7CisgICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAot
ICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8p
OwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7
CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOworICAgICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZpbmRXaXRoU3RyaW5nKG5hbWUu
aW1wbCgpKS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IG5v
dEZvdW5kOworICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxpZE9m
ZnNldDsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3RydWN0dXJl
T3JVbmRlZmluZWQoKSBjb25zdAo=
</data>
<flag name="review"
          id="159185"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>